ใช้โฟลเดอร์อัพโหลดที่แยกต่างหากสำหรับการอัปโหลดไฟล์แนบที่โพสต์


9

ดังนั้นฉันกำลังพยายามหาวิธีใช้โฟลเดอร์อัพโหลดที่แยกกันสองโฟลเดอร์เป็นโฟลเดอร์เริ่มต้นwp-content/uploadsสำหรับการอัปโหลดสื่อทั่วไปและอีกโฟลเดอร์หนึ่งพูดwp-content/customถึงสิ่งที่แนบมาประเภทหนึ่ง (ไฟล์ PDF ที่แนบมากับ post_type เฉพาะ)

สิ่งสำคัญคือคุณต้องแยกทั้งความปลอดภัยขององค์กรและข้อมูลไว้เนื่องจากไฟล์ PDF จะเก็บข้อมูลที่มีความอ่อนไหวซึ่งควรจะมีบทบาทผู้ใช้กำหนดเองสองบทบาทเท่านั้นในขณะที่สื่อทั่วไปนั้นดี

ฉันอายเล็กน้อยที่จะแสดงรหัสที่ฉันใช้งานได้เพราะมันมีหมัด แต่นี่มันไป:

    function custom_post_type_metabox_save_function($post_id) {

    global $post;

    // Verify auto-save, nonces, permissions and so on then:

    update_post_meta($post_id, "meta_key1", $_POST["value1"]);
    update_post_meta($post_id, "meta_key2", $_POST["value2"]);

// this is where it gets uply. I change the 'upload_path' to my desired one for this post type
    update_option('upload_path','wp-content/custom-upload-dir');

// then upload the file to it
wp_upload_bits($_FILES["pdfexame"]["name"], null, file_get_contents($_FILES["pdfexame"]["tmp_name"]));

// and then change it back to default... :$
    update_option('upload_path','');

}
add_action('save_post','custom_post_type_metabox_save_function');

ฉันต้องการให้อัปโหลดไฟล์ 2 ไฟล์เป็นไฟล์เดียวสำหรับโพสต์รูปแบบนี้และอีกไฟล์สำหรับที่เหลือ มีวิธีที่สะอาดกว่าที่จะไปเกี่ยวกับเรื่องนี้?

คำตอบ:


4

ฉันสิ้นสุดการแก้ไขโดยข้ามระบบอัปโหลด wp อย่างสมบูรณ์ดังนั้นนี่คือลักษณะที่ปรากฏในขณะนี้:

/*
 * Define new upload paths
 */

$uploadfolder =  WP_CONTENT_DIR . '/exames'; // Determine the server path to upload files
$uploadurl = content_url() . '/exames/'; // Determine the absolute url to upload files
define(RM_UPLOADDIR, $uploadfolder);
define(RM_UPLOADURL, $uploadurl);

    function custom_post_type_metabox_save_function($post_id) {

        global $post;

        // Verify auto-save, nonces, permissions and so on then:

        update_post_meta($post_id, "meta_key1", $_POST["value1"]);
        update_post_meta($post_id, "meta_key2", $_POST["value2"]);
        update_post_meta($post_id, "meta_key3", $_POST["value3"]);

    $destination =  RM_UPLOADDIR; // Determine the path to upload files
    $filename = $_FILES["file"]["name"]; // Get the uploaded file name

    // This separates the extension from the rest of the file name
    $filename = strtolower($filename) ; 
    $exts = split("[/\\.]", $filename) ; 
    $n = count($exts)-1; 
    $exts = $exts[$n];

    $newname = time() . rand(); // Create a new name
    $filepath = $destination . '/' . $newname.'.'.$exts; // Get the complete file path
    $filename = $newname.'.'.$exts; // Get the new name with the extension

    // Now, if the upload was successful we save a post meta with the filename, if not, save nothing
    if (move_uploaded_file($_FILES["pdfexame"]["tmp_name"], $filepath)) {
            update_post_meta($post_id, "rm_martins_exame_url", $filename); 
        }

  }
    add_action('save_post','custom_post_type_metabox_save_function');

มันน่าเกลียดน้อยกว่าที่ฉันเคยมีมาก่อน แต่ก็ยังดีกว่านี้ถ้าทำได้โดยใช้upload_dirตัวกรอง

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