Фильтр uploads_dir
нуждается в другой реализации для успешного изменения каталога / пути загрузки.
add_filter('wp_handle_upload_prefilter', 'so_8519968_handle_upload_prefilter');
add_filter('wp_handle_upload', 'so_8519968_handle_upload');
function so_8519968_handle_upload_prefilter( $file )
{
add_filter('upload_dir', 'so_8519968_custom_upload_dir');
return $file;
}
function so_8519968_handle_upload( $fileinfo )
{
remove_filter('upload_dir', 'so_8519968_custom_upload_dir');
return $fileinfo;
}
function so_8519968_custom_upload_dir( $path )
{
// Check 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;
// Check if correct post type
$the_post_type = get_post_type( $_REQUEST['post_id'] );
if( 'movies' != $the_post_type )
return $path;
$customdir = '/' . date( 'Y/m' );
//remove default subdir (year/month) and add custom dir INSIDE THE DEFAULT UPLOAD DIR
$path['path'] = str_replace( $path['subdir'], '/downloads' . $customdir, $path['path']);
$path['url'] = str_replace( $path['subdir'], '/downloads' . $customdir, $path['url']);
$path['subdir'] = $customdir;
return $path;
}
Предостережение заключается в том, что структура /wp-content/uploads/downloads/yyyy/mm/filename.ext
.
Я думал, что следующее обработает /wp-content/downloads/...
, но я не могу определить, почему оно не работает.
$path['path'] = str_replace( 'uploads' . $path['subdir'], 'downloads' . $customdir, $path['path']);
$path['url'] = str_replace( 'uploads' . $path['subdir'], 'downloads' . $customdir, $path['url']);
$path['basedir'] = str_replace( 'uploads', 'downloads', $path['basedir']);
$path['baseurl'] = str_replace( 'uploads', 'downloads', $path['baseurl']);
$path['subdir'] = $customdir;
Возможно, для папки загрузки необходимо установить wp-content
в Параметры носителя , http://example.com/wp-admin/options-media.php
и сделать так, чтобы первые два условия функции so_8519968_custom_upload_dir
касались других возможностей загрузки (прямо в Media Библиотека-пост без ID и в других типах постов).