今のところ私のアップロードされたファイルは年と月ごとにまとめられています。しかし、年、月、日ごとに整理したいと思います。これは2012/10/30/image goes here
のような意味です
シモンズ: 利用可能な/ - プラグインがあります これをするために。しかし、私はこの単純な作業にプラグインを使いたくありません。ありがとう
パスを作成するためにpost/page/cptの発行日を使用します。$the_post->post_date_gmt
も利用可能であることに注意してください。
add_filter('wp_handle_upload_prefilter', 'wpse_70946_handle_upload_prefilter');
add_filter('wp_handle_upload', 'wpse_70946_handle_upload');
function wpse_70946_handle_upload_prefilter( $file )
{
add_filter('upload_dir', 'wpse_70946_custom_upload_dir');
return $file;
}
function wpse_70946_handle_upload( $fileinfo )
{
remove_filter('upload_dir', 'wpse_70946_custom_upload_dir');
return $fileinfo;
}
function wpse_70946_custom_upload_dir($path)
{
/*
* Determines if uploading from inside a post/page/cpt - if not, default Upload folder is used
*/
$use_default_dir = ( isset($_REQUEST['post_id'] ) && $_REQUEST['post_id'] == 0 ) ? true : false;
if( !empty( $path['error'] ) || $use_default_dir )
return $path; // Error: not uploading from a post/page/cpt
$the_post = get_post( $_REQUEST['post_id'] );
$y = date( 'Y', strtotime( $the_post->post_date ) );
$m = date( 'm', strtotime( $the_post->post_date ) );
$d = date( 'd', strtotime( $the_post->post_date ) );
$customdir = '/' . $y . '/' . $m . '/' . $d;
$path['path'] = str_replace($path['subdir'], '', $path['path']); //remove default subdir (year/month)
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;
}
私が言うことができる限り、フィルタ 'upload_dir'はwp-includes\functions.phpで一度だけ呼び出されます。
私はこの解決法がもっと簡単であると思います。アップロードされた日付のすべてのアップロードを年/月/日のディレクトリに配置します。
function upload_dir_filter($uploads){
$day = date('d');
$uploads['path'] .= '/' . $day;
$uploads['url'] .= '/' . $day;
return $uploads;
}
add_filter('upload_dir', 'upload_dir_filter');
私はこれら2つのコードから新しいコードを作りました。画像はアップロードされた日付フォルダではなく投稿日フォルダにアップロードされます。
function upload_dir_filter($uploads){
$the_post = get_post( $_REQUEST['post_id'] );
$y = date( 'Y', strtotime( $the_post->post_date ) );
$m = date( 'm', strtotime( $the_post->post_date ) );
$day = date( 'd', strtotime( $the_post->post_date ) );
$uploads['path'] .= '/' . $day;
$uploads['url'] .= '/' . $day;
return $uploads;
}
add_filter('upload_dir', 'upload_dir_filter');