我一直试图直接针对woocommerce产品帖子类型进行不同的上传工作,但它适用于每次上传。这是我的代码:
function 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 && $_REQUEST['post_type'] == 'product'
)
? true : false;
if( !empty( $path['error'] ) || $use_default_dir )
return $path; //error or uploading not from a post/page/cpt
// Save uploads in FILETYPE based folders. When using this method,
// you may want to change the check for $use_default_dir
$extension = substr( strrchr( $_POST['name'], '.' ), 1 );
switch( $extension )
{
case 'jpg':
case 'png':
case 'gif':
$customdir = '/woo/images';
break;
case 'mp4':
case 'm4v':
$customdir = '/woo/videos';
break;
case 'txt':
case 'doc':
case 'pdf':
$customdir = '/woo/documents';
break;
default:
$customdir = '/woo/others';
break;
}
//remove default subdir (year/month)
$path['path'] = str_replace($path['subdir'], '', $path['path']);
$path['url'] = str_replace($path['subdir'], '', $path['url']);
$path['subdir'] = $customdir;
$path['path'] .= $customdir;
$path['url'] .= $customdir;
return $path;
}
这是将我的文件写入完美的woo /目录,但不仅限于产品发布类型。任何帮助将不胜感激。
答案 0 :(得分:0)
你想要覆盖woocommerce插件文件class-wc-admin-post-types.php
中的woo默认上传目录。如果你想覆盖它,你可以为这个' upload_dir'创建一个过滤器。优先级更高。
add_action('pre_get_posts', '_my_pre_get_posts', 10, 1);
function _my_pre_get_posts( $wp ) {
global $typenow, $blog_id;
if ( 'product' == $typenow && $blog_id != 1) {
switch_to_blog(1);
}
}
由于post_type
取决于要查询的当前post_type,它可能会也可能不起作用,如果您希望这也适用于订单,您可能会检查&#39; shop_order&#39;。< / p>
我尝试了一次但只工作了几次。它可能在woo方法之前就已经过时了,但我认为你也可以暂时删除一个方法,然后让脚本分开工作。
我发现你的问题正在寻找类似的东西,所以认为你可能比我更幸运。此外,WP还有一个内置的$mime
动作/过滤器。我这样用它:
add_filter('upload_mimes','wpaclip_restrict_mimes_types');
function wpaclip_restrict_mimes_types($mimes) {
if (!current_user_can('author')) {
return;
}
$mimes = array(
'acc' => 'audio/aac',
'mp4 | m4a' => 'audio/mp4',
'mp1 | mp2 | mp3 | mpg | mpeg' => 'audio/mpeg',
'ogg | oga' => 'audio/ogg',
'wav' => 'audio/wav',
'webm' => 'audio/webm'
);
return $mimes;
}
这可能有助于隔离您的文件类型。