Cách thay đổi thư mục tải lên trong wp_handle_upload


9

Tôi đang cố gắng tìm ra cách sử dụng hàm wp_handle_upload cho một plugin tùy chỉnh để tôi có thể chỉ định thư mục tải lên của riêng mình. Mã cho đến nay lấy một tệp từ trang cài đặt plugin của tôi và tải lên thư mục tải lên thư mục với năm và tháng.

Tôi đã xem qua liên kết này mà tôi nghĩ có thể có một số manh mối - 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>";
}

Làm thế nào tôi có thể tải lên một thư mục của sự lựa chọn của tôi?

Bất kỳ giúp đỡ nhiều người đánh giá cao.

Câu trả lời:


5

Đây là một ví dụ hoàn chỉnh cho cách chúng tôi thực hiện trong Tải xuống kỹ thuật số dễ dàng:

/**
 * 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 );

Lưu ý, chúng tôi chỉ sửa đổi thư mục tải lên khi tải lên tệp từ trang loại bài đăng tùy chỉnh Tải xuống của chúng tôi. Bạn sẽ cần điều chỉnh nó cho trang cài đặt của plugin.
Pippin

Nó thiếu "]" với$upload['url'
Mario Radomanana

1

Tôi không nhớ thực hiện chính xác điều này trong thực tế, nhưng hầu hết (tất cả?) Xử lý đường dẫn tải lên đều đi qua bộ lọc wp_upload_dir()áp dụng đó upload_dircho thông tin được trả về. Bạn nên thử lọc nó trong suốt thời gian mã của bạn chạy và điều chỉnh các đường dẫn đến vị trí mong muốn.


Phương pháp này dễ thực hiện. Một ví dụ có thể được tìm thấy tại liên kết này, ( codex.wordpress.org/Plugin_API/Filter_Reference/ mẹo .
AlanP
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.