2017-03-21 8 views
0

私は、製品カテゴリーを出荷することができるということを制限する解決策を考え出しています。これまで私が思いついたことがあります。WooCommerceはカテゴリーに基づいて州への配送を制限します

function get_prod_cat() { 
    global $woocommerce; 
    $specialfeecat = 34; // category id for the special fee 
    $items = $woocommerce->cart->get_cart(); 
    foreach ($items as $item) { 
     $product = $item['data']; 
     $terms = get_the_terms($product->id, 'product_cat'); 
     if ($terms && ! is_wp_error($terms)) : 
      foreach ($terms as $term) { 
       $catid = $term->term_id; 
       if($specialfeecat == $catid) { 
        $GLOBALS['cat_id'] = $catid; 
       } 
      return $cat_id; 
      } 
     endif; 
    } 
} 
if ($cat_id == 34) { 
add_filter('woocommerce_states', 'wc_sell_only_states'); 
} 
function wc_sell_only_states() {  
     $states['US'] = array(
     'AK' => __('Arkansas', 'woocommerce'), 
     'DC' => __('Washington DC', 'woocommerce'), 
     'IL' => __('Illinois', 'woocommerce'), 
     'KY' => __('Kentucky', 'woocommerce'), 
     'MN' => __('Minnesota', 'woocommerce'), 
     'NM' => __('New Mexico', 'woocommerce'), 
     ); 
     return $states; 
} 

私は状態を制限する条件のためにそれを使用できるように、それのうち最初の関数から変数$ CAT_IDを取得しようとしています。前もって感謝します。

答えて

1

add_filter('woocommerce_states', 'wc_sell_only_states');のようにしてください。内部関数 'wc_sell_only_states($ states)'は、あなたが 'get_prod_cat'の内部で行っていたロジックを適用します。カテゴリが一致した場合は状態を変更します

$states['US'] = array(
     'AK' => __('Arkansas', 'woocommerce'), 
     'DC' => __('Washington DC', 'woocommerce'), 
     'IL' => __('Illinois', 'woocommerce'), 
     'KY' => __('Kentucky', 'woocommerce'), 
     'MN' => __('Minnesota', 'woocommerce'), 
     'NM' => __('New Mexico', 'woocommerce'), 
     ); 

それ以外の状態はそのままです。

関連する問題