जवाबों:
यह आपको अपलोड होते ही किसी अनुलग्नक का नाम बदलने की अनुमति देगा:
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
।
फ़ंक्शन के लिए काम करता है
आप फ़ाइल नाम, फ़ाइल प्रकार और माइम प्रकार सेट कर सकते हैं जिन्हें आप foreach
लूप से पहले फ़ंक्शन के अंदर बदलना चाहते हैं । फ़ाइल को पोस्ट आईडी और फिर संलग्नक आईडी मिलती है, जिससे आप एक बार में कई फ़ाइलों को सुरक्षित रूप से अपलोड और बदल सकते हैं। यह भी (पहले) पोस्ट आईडी और (दूसरा) अटैचमेंट आईडी द्वारा फाइलों को ऑर्डर करने के बारे में परवाह करता है।
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' );
फ़ंक्शन को अलग-अलग छोटे प्लगइन के रूप में आपके फ़ंक्शन्स.php फ़ाइल या (बेहतर) में जोड़ा जाना चाहिए। बस शीर्ष पर एक प्लगइन टिप्पणी जोड़ें, इसे प्लगइन्स फ़ोल्डर में अपलोड करें और सक्रिय करें।
मैं PHP की rename
और फ़ाइल द्वारा दिए गए पथ का उपयोग करूँगा get_attached_file
।
function rename_file( $post_id, $newname ) {
$file = get_attached_file( $post_id );
rename($file,dirname($file).$newname)
}
ध्यान दें कि यह परीक्षण नहीं किया गया है और आपको सीटी फ़ाइलों को काम करते समय अत्यधिक सावधानी बरतनी चाहिए। शायद इसे काम करने के लिए बदलने की जरूरत है लेकिन यह एक अच्छा शुरुआती बिंदु हो सकता है। उम्मीद है की यह मदद करेगा।
मुझे बताएं कि क्या यह मदद करता है और मैं कोड को वास्तविक कार्य कोड में बदल दूंगा।
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 );
}
संदर्भ http://codex.wordpress.org/Function_Reference/update_attached_file http://wordpress.org/tags/add_attachment