2017-06-23 18 views
0

現在のショッピングカートの内容に応じて、カテゴリページでウーコム商品のグループを条件付きで非表示にしたいとします。私は4つの製品を持つ箱というカテゴリを持っています。それらのうちの2つは段ボールのカテゴリにも2つはプラスチックのカテゴリにもあります。プログラムでウオコマースプロダクトを非表示

ID 23の商品がすでにカートに入っている場合、プラスチック製の箱を表示したいと思います。そうでなければ、私はそれらを隠したい。カートの内容を確認する方法はわかっていますが、その答えが出たら、そのページのプラスチックカテゴリから製品を隠すにはどうしたらいいですか?

add_action('woocommerce_before_shop_loop', 'my_before_shop_loop'); 

function my_before_shop_loop() { 
    global $woocommerce; 

    $flag = 0; 

    foreach($woocommerce->cart->get_cart() as $key => $val) { 
     $_product = $val['data']; 

     if ($_product->id == '23') { 
      $flag = 1; 
     } 
    } 

    if ($flag == 0) { 

     // hide products that are in the plastic category 
     // this is where I need help 

    } 
} 

答えて

1

現在使用しているフックは、製品がデータベースから取得された後に起動されます。クエリ自体から製品をフィルタすることができます。以下のコードでは、フロントエンドで非表示にしたい製品を渡すことができます。

function custom_pre_get_posts_query($q) { 

     // Do your cart logic here 

     // Get ids of products which you want to hide 
     $array_of_product_id = array(); 

     $q->set('post__not_in', $array_of_product_id); 

    } 
    add_action('woocommerce_product_query', 'custom_pre_get_posts_query'); 
+0

これは機能します。ありがとうございます。 – poptartgun

関連する問題