WordPress Snippet

ワードプレスをカスタマイズしよう

WordPress3.5アップロードディレクトリ

WordPress3.5になり、アップロードディレクトリの設定画面が表示されなくなりました。

現在のアップロードディレクトリに関する情報を取得する関数。

wp-includes/functions.php line:1488

function wp_upload_dir( $time= null )
$time= 'yyyy/mm'形式

この関数を使うと、

var_dump( wp_upload_dir( $time= null ) );
//すると以下のような結果を得られます。

array(6) {
 ["path"]=> ""
 ["url"]=>
 string(44) ""
 ["subdir"]=>
 string(0) ""
 ["basedir"]=>
 string(44) ""
 ["baseurl"]=>
 string(44) ""
 ["error"]=>
 bool(false)
}

また、この関数は、upload_dir フィルタフックがあるので、変更などが簡便です

その他

オプションテーブルに保存された、アップロードディレクトリの情報を取得

$url= get_option( 'upload_url_path' );
$upload_path= trim( get_option( 'upload_path' ) );

年付ベースのディレクトリに保存するかどうかの設定は、管理画面に、現在でも残っていますが、

以下のコードで取得できます。

get_option( 'uploads_use_yearmonth_folders' ) 

ALLOW_UNFILTERED_UPLOADS

マルチサイトでの、アップロードディレクトリの定数

wp-config.phpでの、UPLOADS定数の変更事例がありますが、Moving_uploads_folderこの指定は、マルチサイトの場合には、少し考慮がいるだろうと思います。
利用になる場合は、ms-files.phpの挙動をよく確認しながらカスタマイズを進める必要がありそうです。

wp-includes/ms-default-constants.php:

	define( 'UPLOADBLOGSDIR', 'wp-content/blogs.dir' );
	define( 'UPLOADS', UPLOADBLOGSDIR . "/{$wpdb->blogid}/files/" );
	define( 'BLOGUPLOADDIR', WP_CONTENT_DIR . "/blogs.dir/{$wpdb->blogid}/files/" );