私は自分自身のアップロードディレクトリを指定することができるようにカスタムプラグインのためにwp_handle_upload関数を使用する方法を解決しようとしています。これまでのコードは私のプラグイン設定ページからファイルを取得し、年と月と共にフォルダuploadsにアップロードします。
私はいくつかの手がかりを持っているかもしれないと思ったこのリンクに出会った - 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>";
}
選択したディレクトリにアップロードする方法
どんな助けでも大いに感謝されている人たち。
これが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 );
実際にこれを行ったことを私は覚えていませんが、ほとんどの(すべての)アップロードパス処理は wp_upload_dir()
を通過し、返された情報にupload_dir
フィルタを適用します。あなたは、あなたのコードが走っている間それをフィルタリングして、そして望みの場所へのパスを調整することを試みるべきです。