2016-02-08 119 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; 
} 

這可能有助於隔離您的文件類型。