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

Easy Digital Downloads에서이 작업을 수행하는 방법에 대한 전체 예는 다음과 같습니다.

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

다운로드 사용자 정의 게시물 유형 페이지에서 파일을 업로드 할 때 업로드 디렉토리 만 수정합니다. 플러그인의 설정 페이지에 맞게 조정해야합니다.
Pippin

그것은과 "]"부족$upload['url'
마리오 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.