Jawaban:
Ini akan memungkinkan Anda untuk mengganti nama lampiran segera setelah diunggah:
add_action('add_attachment', 'rename_attachment');
function rename_attachment($post_ID){
$file = get_attached_file($post_ID);
$path = pathinfo($file);
//dirname = File Path
//basename = Filename.Extension
//extension = Extension
//filename = Filename
$newfilename = "NEW FILE NAME HERE";
$newfile = $path['dirname']."/".$newfilename.".".$path['extension'];
rename($file, $newfile);
update_attached_file( $post_ID, $newfile );
}
rename_attachment
.
Fungsi ini berfungsi untuk
Anda dapat mengatur nama file, tipe file & tipe pantomim yang ingin Anda ubah di dalam fungsi sebelum foreach
loop. File mendapatkan ID pos dan kemudian ID lampiran ditambahkan, sehingga Anda dapat dengan aman mengunggah dan mengubah beberapa file sekaligus. Ini juga peduli tentang pemesanan file dengan ID posting (pertama) dan ID lampiran (kedua).
function wpse30313_update_attachment_names($post_ID)
{
// Abort if WP does an autosave
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return;
# >>>> SET
// New file name:
$new_file_name = "___";
// Best would be to take the post name as file name instead of a custom title:
# $post_data = get_post( $post_ID );
# $new_file_name = $post_data->post_name;
// The file types we want be changed:
$allowed_types = array(
'image'
);
// The mime types we want to be changed:
$allowed_ext = array(
'jpg'
,'jpeg'
,'gif'
,'png'
);
# <<<< SET
// Appended by post ID for collision safety
$new_file_name = "{$new_file_name}-{$post_ID}";
// get all attached files
$attachments = get_children( array(
'post_type' => 'attachment'
,'post_parent' => $post_ID
) );
// Bulk updating attached file names
foreach ( $attachments as $att )
{
$att_ID = $att->ID;
// Append attachment ID (collision safety)
// Also allows sorting files by post & then attchment ID
$new_name = "{$new_file_name}-{$att_ID}";
$mime_type = explode( "/", get_post_mime_type( $att->ID ) );
$file_type = $mime_type[0];
$mime_type = $mime_type[1];
// Skip file types we don't want to change
if ( ! in_array( $file_type, $allowed_types ) )
continue;
// Skip mime types we don't want to change
if ( ! in_array( $mime_type, $allowed_ext ) )
continue;
// Get current file info
$file_path = get_attached_file( $att->ID );
$path = pathinfo( $file_path );
$dir = trailingslashit( $path['dirname'] );
$ext = $path['extension'];
// Build final name
$final = "{$dir}{$new_name}.{$ext}";
// Skip if the path was already changed on upload
// If we don't set this, the function wouldn't work for older files
if ( $file_path == $final )
continue;
// Update attachment-post meta info for file
rename( $file_path, $final );
update_attached_file( $att_ID, $final );
}
return;
}
add_action( 'add_attachment', 'wpse30313_update_attachment_names' );
add_action( 'edit_attachment', 'wpse30313_update_attachment_names' );
Fungsi harus ditambahkan ke file functions.php Anda atau (lebih baik) sebagai plugin kecil yang terpisah. Cukup tambahkan komentar plugin di atas, unggah ke folder plugins dan aktifkan.
Saya akan menggunakan PHP rename
dan path ke file yang diberikan oleh get_attached_file
.
function rename_file( $post_id, $newname ) {
$file = get_attached_file( $post_id );
rename($file,dirname($file).$newname)
}
CATATAN bahwa ini belum diuji dan Anda harus sangat berhati-hati saat bekerja dengan file whith. Mungkin perlu diubah agar bisa berfungsi tetapi mungkin merupakan titik awal yang baik. Semoga ini membantu.
Beri tahu saya jika ini membantu dan saya akan mengubah kode menjadi kode kerja yang sebenarnya.
add_action('add_attachment', 'rename');
function rename($post_ID){
$post = get_post($post_ID);
$file = get_attached_file($post_ID);
$path = pathinfo($file);
$newfilename = "mynewfilename";
$newfile = $path['dirname']."/".$newfilename.".".$path['extension'];
rename($file, $newfile);
update_attached_file( $post_ID, $newfile );
}
Referensi http://codex.wordpress.org/Function_Reference/update_attached_file http://wordpress.org/tags/add_attachment