伍商务产品的不同上传目录


Different upload directory for woocommerce products

我一直在尝试直接获得不同的上传,仅供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/目录完美,但不仅限于产品帖子类型。任何帮助将不胜感激。

您将需要覆盖woocommerce插件文件中的woo默认上传目录class-wc-admin-post-types.php如果要覆盖它,则可以创建具有更高优先级的"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,如果您希望它也适用于订单,您可能会检查"shop_order"。

我试过一次,但只工作了几次。它可能在 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;
 }

这可能有助于隔离您的文件类型。

相关文章:
  • 没有找到相关文章