วิธีเปลี่ยนไดเรกทอรีอัปโหลดใน wp_handle_upload


9

ฉันกำลังพยายามหาวิธีใช้ฟังก์ชั่น wp_handle_upload สำหรับปลั๊กอินที่กำหนดเองเพื่อที่ฉันจะสามารถระบุไดเรกทอรีอัพโหลดของตัวเอง รหัสนี้ใช้ไฟล์จากหน้าการตั้งค่าปลั๊กอินของฉันและอัปโหลดไปยังโฟลเดอร์ที่อัปโหลดโฟลเดอร์พร้อมปีและเดือน

ฉันเจอลิงค์นี้ซึ่งฉันคิดว่าอาจมีปม - http://yoast.com/smarter-upload-handling-wp-plugins

if(strtolower($_SERVER['REQUEST_METHOD']) == "post"){

     $overrides = array('test_form' => false);
     $file = wp_handle_upload($_FILES['binaryFile'], $overrides);

     echo "<pre>" . print_r($file, true) . "</pre>";
}

ฉันจะอัพโหลดไปยังไดเรกทอรีที่ฉันเลือกได้อย่างไร

ความช่วยเหลือใด ๆ ที่ชื่นชมพวก

คำตอบ:


5

นี่คือตัวอย่างที่สมบูรณ์เกี่ยวกับวิธีที่เราทำในการดาวน์โหลดดิจิทัลแบบง่าย:

/**
 * Set Upload Directory
 *
 * Sets the upload dir to edd. This function is called from
 * edd_change_downloads_upload_dir()
 *
 * @since 1.0
 * @return array Upload directory information
*/
function edd_set_upload_dir( $upload ) {
    $upload['subdir'] = '/edd' . $upload['subdir'];
    $upload['path'] = $upload['basedir'] . $upload['subdir'];
    $upload['url']  = $upload['baseurl'] . $upload['subdir'];
    return $upload;
}


/**
 * Change Downloads Upload Directory
 *
 * Hooks the edd_set_upload_dir filter when appropriate. This function works by
 * hooking on the WordPress Media Uploader and moving the uploading files that
 * are used for EDD to an edd directory under wp-content/uploads/ therefore,
 * the new directory is wp-content/uploads/edd/{year}/{month}. This directory
 * provides protection to anything uploaded to it.
 *
 * @since 1.0
 * @global $pagenow
 * @return void
 */
function edd_change_downloads_upload_dir() {
    global $pagenow;

    if ( ! empty( $_REQUEST['post_id'] ) && ( 'async-upload.php' == $pagenow || 'media-upload.php' == $pagenow ) ) {
        if ( 'download' == get_post_type( $_REQUEST['post_id'] ) ) {
            add_filter( 'upload_dir', 'edd_set_upload_dir' );
        }
    }
}
add_action( 'admin_init', 'edd_change_downloads_upload_dir', 999 );

หมายเหตุเราจะปรับเปลี่ยนไดเรกทอรีการอัปโหลดเมื่ออัปโหลดไฟล์จากหน้าประเภทโพสต์ที่กำหนดเองดาวน์โหลดของเราเท่านั้น คุณจะต้องปรับมันสำหรับหน้าการตั้งค่าปลั๊กอินของคุณ
ปิ๊ปปิ้น

ไม่มี "]" กับ$upload['url'
Mario Radomanana

1

ฉันจำไม่ได้ว่าทำสิ่งนี้ในทางปฏิบัติ แต่การจัดการเส้นทางการอัปโหลด (ทั้งหมด?) ส่วนใหญ่ต้องผ่านตัวกรองที่wp_upload_dir()ใช้upload_dirกับข้อมูลที่ส่งคืน คุณควรลองกรองตามระยะเวลาที่โค้ดของคุณกำลังทำงานและปรับเส้นทางไปยังตำแหน่งที่ต้องการ


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