2016-02-08 86 views
1

我一直试图直接为woocommerce产品帖子类型获取不同的上传,但它适用于每次上传。这里是我的代码: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; 
} 

这是写我的文件到宇/目录完美,但并不仅限于产品立柱型。任何帮助,将不胜感激。

+0

你在哪里调用这段代码?钩子在哪里? – Skatox

+0

函数 - 这里是我的钩子: – rhysclay

回答

0

你会想要覆盖woocommerce插件文件中的woo default uploads目录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; 
} 

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