Как скрыть показ «Без рубрики» и других категорий в WooCommerce?

В плагине WooСommerce есть по умолчанию не удаляемая категория «Uncategorized» («Без рубрики»). Обычно владельцы интернет-магазинов ее или переименовывают, или удаляют совсем, назначая другую рубрику по умолчанию.

Как удалить категорию «Без рубрики» описано довольно часто. Проблема часто возникает в том, что нельзя удалить назначенную по умолчанию категорию в Woocommerce. Думаю суть понятна, что нужно просто сменить по умолчанию категорию.

Но вот появился владелец ИМ, который хотел бы оставить «Без рубрики», но не показывать на сайте посетителям нигде. А зачем? Оказывается, у него менеджеры бывало забывали указывать категории к товарам и они по умолчанию «шли» к рубрике «Без рубрики». Конечно это удобно, посмотрели что попало в «без рубрику» и в последствии отсортировали, но это оказалось не удобным для владельца (может и посетителям). Он хотел оставить рубрику и скрыть ее везде (разумеется на сайте посетителей). Также ему нужно было скрыть еще несколько категорий таким же образом (зачем не знаю).

/* исключить/не показывать нужные категории */
add_filter( 'get_terms', 'wplife_get_subcategory_terms', 10, 3 );
function wplife_get_subcategory_terms( $terms, $taxonomies, $args ) {
  $new_terms = array();
  $excl_id = array ('slug1','slug2'); // Здесь указываем slug категорий, который нужно не показывать
//print_r($terms);
// Если категория товара
  if ( in_array( 'product_cat', $taxonomies ) ) {
    foreach ( $terms as $key => $term ) {
      if ( ! in_array( $term->slug, $excl_id ) ) { 
        $new_terms[] = $term;
      }
    }
    $terms = $new_terms;
  }
  return $terms;
}

В functions.php вашей темы (дочерней) добавляем указанный код. В массиве $excl_id указываем ID категорий, которые не хотим показывать нигде (не в магазине, не в меню и т.д.), обязательно в кавычках и через запятую. Я указал в примере две, вы можете указать одну или сколько угодно.

Надеюсь это кому-то пригодится, пишите в комментариях пригодилось или нет.

Дополнено:

Т.к. возник вопрос исключить категории не по их slug, а по ID, то можно использовать такой код:

add_filter( 'get_terms_args', 'wplife_get_subcategory_terms', 10, 2 );
function wplife_get_subcategory_terms( $args ) {
  $args['exclude'] = array( 459,325 ); // В массиве указываем ID категорий, которые нужно исключить
  return $args;
}

Ну и как?

3 комментария к “Как скрыть показ «Без рубрики» и других категорий в WooCommerce?”

  1. Этот фильтр скрыл категорию везде, и на сайте, и в админке. Сейчас в ней не было товаров, но после импорта из другой программы они могут появиться и как их искать, чтоб исправить? Отключать ненадолго фильтр, потом опять включать?

    1. Александр

      Если нет товаров временно, то скорее всего вам подойдет код, который скрывает категории, если нет там товаров, а когда появляются товары, то показывает.
      Искать категории можно как по slug, так и по ID

    2. Александр

      Если для админки пропало, то попробуйте изменить код так, вместо строки

      add_filter( ‘get_terms’, ‘wplife_get_subcategory_terms’, 10, 3 );

      замените на

      if ( !is_admin() ){ add_filter( ‘get_terms’, ‘wplife_get_subcategory_terms’, 10, 3 ); }

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Пролистать наверх