โฟลเดอร์อัพโหลดเฉพาะสำหรับ PDF ในประเภท Post แบบกำหนดเองใน WP multisite


14

ฉันต้องกรองการอัปโหลดไปยังโฟลเดอร์เฉพาะสำหรับประเภทโพสต์ที่กำหนดเองที่เรียกว่า "เอกสาร" เฉพาะสำหรับ PDF

จนถึงตอนนี้ฉันมี:

function custom_upload_directory( $args ) {
$base_directory = '/home/xxx/my_uploadfolder';
$base_url = 'http://xxxx/wp-content/uploads/my_uploadfolder';

$id = $_REQUEST['post_id'];
$parent = get_post( $id )->post_parent;
// Check the post-type of the current post

if( "document" == get_post_type( $id ) || "document" == get_post_type( $parent ) ) {
    $args['path'] = $base_directory;
    $args['url']  = $base_url;
    $args['basedir'] = $base_directory;
    $args['baseurl'] = $base_url;

}

return $args;
}
add_filter( 'upload_dir', 'custom_upload_directory' );

ใช้งานได้ แต่มีปัญหา: ไฟล์ชนิดใดก็ได้ที่ถูกเปลี่ยนเส้นทางใน my_uploadfolder นอกจากนี้ฉันไม่สามารถลบไฟล์เหล่านี้จากผู้ดูแลระบบ WP เมื่อมี ใครช่วยได้บ้าง

คำตอบ:


2

คุณอาจพิจารณาใช้

if(get_post_mime_type($id) == 'application/pdf'){
   ...
}

เพื่อตรวจสอบไฟล์ pdf

http://codex.wordpress.org/Function_Reference/get_post_mime_type

คุณอาจดูรหัสที่อยู่เบื้องหลังฟังก์ชั่นwp_delete_attachment ()และคุณสามารถขอมันด้วยการ กระทำการลบสิ่งที่แนบมา ในการลบไฟล์คุณสามารถใช้unlink ()

http://php.net/manual/en/function.unlink.php


2

upload_dirเหตุผลที่คุณกำลังมีปัญหานี่คือที่คุณกำลังใช้ตัวกรองสากล แทนที่จะทำเช่นนี้ใช้ตัวกรองเงื่อนไขupload_dirหลังจากการตรวจสอบครั้งแรกสำหรับ['mime-type'] application/pdfคุณต้องสกัดกั้นกระบวนการอัปโหลดที่wp_handle_uploadhook การดำเนินการและแก้ไขโฟลเดอร์การอัปโหลดที่นั่น สิ่งที่คุณโพสต์นั้นมุ่งไปในทิศทางที่ถูกต้อง แต่คุณต้องทำงานกับ$_POSTข้อมูลที่เข้ามาและใช้ตัวกรองที่นั่นโดยค้นหาการอัปโหลดไฟล์['mime-type']ที่ WordPress จัดเก็บระหว่างกระบวนการอัปโหลด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.