2016-10-20 11 views
1

検索結果から商品を削除しようとしていますが、カテゴリに含まれていません。Woocommerceがカテゴリーに属していない場合、検索結果から商品を削除します

私はこれを試しましたが、これは動作しません。

add_action('pre_get_posts', 'products_pre_get_posts'); 

function products_pre_get_posts($query) { 

    if (! is_admin() && is_search() && is_shop()) { 
    $query->set('tax_query', array(array(
     'taxonomy' => 'product_cat', 
     'field' => 'slug', 
     'terms' => array(''), 
     'operator' => 'NOT IN' 
    ))); 
    } 
} 

答えて

3

これはあなたのために動作します:

add_action('pre_get_posts', 'products_pre_get_posts'); 

function products_pre_get_posts($query) { 

    if (! is_admin() && $query->is_main_query() && $query->is_search()) { 

     $query->set('tax_query', array(
      array(
       'taxonomy' => 'product_cat', 
       'field'  => 'term_id', 
       'terms'  => get_terms(array('taxonomy' => 'product_cat', 'fields' => 'ids')) 
      ) 
     )); 
    } 
} 

この場合、機能get_terms()では、デフォルトでは、引数'hide_empty'trueであることから、任意のポストに割り当てられていない用語を除外用語IDの配列を返します。

+0

このエラーが発生しました=>オブジェクト(WP_Error)#333(2){["errors"] =>配列(1){["invalid_taxonomy"] => array(1){ –

+0

はい、私のWordPressのバージョンは4.6.1です –

+0

申し訳ありませんが、私はエラーを再現することはできません、作業中です(0)=> string(16) "無効なタクソノミ"}} ["error_data"] =>私の終わりに。 –

関連する問題