WordPress / WooCommerce:除特定类别外,不显示产品

时间:2018-11-11 10:03:37

标签: php wordpress woocommerce hook-woocommerce

我有一个WooCommerce问题,我无法解决自己。目前,我正在使用此代码隐藏特定类别的产品。

function custom_pre_get_posts_query( $q ) {
  $tax_query = (array) $q->get( 'tax_query' );
  $tax_query[] = array(
    'taxonomy' => 'product_cat',
    'field' => 'slug',
    'terms' => array( 'my-category' ),
    'operator' => 'NOT IN'
  );
  $q->set( 'tax_query', $tax_query );
}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );

到目前为止,效果很好。但我想修改此代码,但有一个例外...

当我进入产品类别“我的类别” 时,显然也不会显示产品。但是,我想更改代码,以便当我进入“我的类别”的类别页面时不适用。在此类别中,我希望显示产品。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您可以使用is_product_category()函数进行检查

function custom_pre_get_posts_query( $q ) {
   if( ! is_product_category( 'my-category' ) {

      $tax_query = (array) $q->get( 'tax_query' );
      $tax_query[] = array(
         'taxonomy' => 'product_cat',
         'field' => 'slug',
         'terms' => array( 'my-category' ),
         'operator' => 'NOT IN'
      );
      $q->set( 'tax_query', $tax_query );
   }
}

答案 1 :(得分:-1)

使用is_tax功能检查页面。 这是一个例子。

function custom_pre_get_posts_query( $q ) {
    if ( is_tax( 'product_cat', 'my-category' ) ) return; // <--

  $tax_query = (array) $q->get( 'tax_query' );
  $tax_query[] = array(
    'taxonomy' => 'product_cat',
    'field' => 'slug',
    'terms' => array( 'my-category' ),
    'operator' => 'NOT IN'
  );
  $q->set( 'tax_query', $tax_query );
}