มีฟังก์ชั่นที่อนุญาตให้ฉันเปลี่ยนชื่อไฟล์ของสิ่งที่แนบมาตามรหัสสิ่งที่แนบมาที่ฉันมีหรือไม่
ขอบคุณ! เดนนิส
มีฟังก์ชั่นที่อนุญาตให้ฉันเปลี่ยนชื่อไฟล์ของสิ่งที่แนบมาตามรหัสสิ่งที่แนบมาที่ฉันมีหรือไม่
ขอบคุณ! เดนนิส
คำตอบ:
นี่จะช่วยให้คุณเปลี่ยนชื่อไฟล์แนบได้ทันทีที่อัพโหลด:
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
ฟังก์ชั่นควรจะเรียกว่า
ฟังก์ชั่นใช้งานได้สำหรับ
คุณสามารถตั้งชื่อไฟล์ประเภทไฟล์ & ประเภท mime ที่คุณต้องการเปลี่ยนภายในฟังก์ชั่นก่อนที่จะforeach
วนรอบ ไฟล์จะได้รับรหัสประจำตัวจากนั้นจึงเพิ่มรหัสสิ่งที่แนบมาดังนั้นคุณจึงสามารถอัปโหลดและเปลี่ยนไฟล์ได้หลายไฟล์พร้อมกัน นอกจากนี้ยังให้ความสำคัญกับการสั่งซื้อไฟล์ตาม (ID แรก) โพสต์ ID และ (ไฟล์ที่สอง) ไฟล์แนบ
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' );
ควรเพิ่มฟังก์ชั่นลงในไฟล์ functions.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