WordPress / WooCommerce: не показывать товары из определенной категории, кроме - PullRequest
0 голосов
/ 11 ноября 2018

У меня проблема с 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' );

Пока это хорошо работает. Но я бы хотел изменить этот код за одним исключением ...

Когда я нахожусь в категории продуктов 'my-category' , продукты, очевидно, тоже не отображаются. Тем не менее, я хотел бы изменить код, чтобы он не применялся, когда я нахожусь на странице категории "моей категории". В этой категории я хочу, чтобы товары были показаны.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Вы можете проверить это с помощью функции 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 );
   }
}
0 голосов
/ 11 ноября 2018

Используйте функцию 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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...