Скрытие определенных категорий из виджета категорий

19 июн. 2015 г., 22:37:13
Просмотры: 38.4K
Голосов: 12

Я пытаюсь скрыть большое количество категорий из моего виджета категорий. Я пробовал несколько плагинов, но ни один из них не позволяет использовать опцию выпадающего списка. Я изучил хук widget_categories_args, и похоже, это то, что мне нужно, но я не могу заставить его работать.

Вот мой код

function widget_categories_args_filter( $cat_args ) {
$exclude_arr = array( 57,61,63,56,55,62,52,53,54,67,65 ); // Массив ID категорий для исключения

if( isset( $cat_args['exclude'] ) && !empty( $cat_args['exclude'] ) )
    $exclude_arr = array_unique( array_merge( explode( ',', $cat_args['exclude'] ), $exclude_arr ) );
$cat_args['exclude'] = implode( ',', $exclude_arr );
return $cat_args;
}

add_filter( 'widget_categories_args', 'widget_categories_args_filter', 10, 1 );

Я взял это отсюда: https://codex.wordpress.org/Plugin_API/Filter_Reference/widget_categories_args

Я помещаю это в functions.php моей темы. Это не должно иметь значения, даже несмотря на то, что функция предназначена для плагинов, верно?

7
Комментарии

Попробуйте увеличить четвертое число до какого-нибудь большого значения, например 1000

s_ha_dum s_ha_dum
20 июн. 2015 г. 00:35:15

Это работает для меня для встроенного виджета категорий.

s_ha_dum s_ha_dum
20 июн. 2015 г. 02:54:33

@s_ha_dum четвертое число? В строке add_filter()?

FranticJ3 FranticJ3
22 июн. 2015 г. 17:21:08

Извините, четвертый аргумент. У вас указано 1. Попробуйте 1000. Как я уже говорил, у меня это работает, поэтому возможно вмешательство другой функции. Установка высокого приоритета может сделать вашу функцию последней в очереди. Вы используете стандартный виджет категорий?

s_ha_dum s_ha_dum
22 июн. 2015 г. 17:25:52

@s_ha_dum да, я использую стандартный виджет категорий. Я установил приоритет 10000, но они все равно не скрываются.

FranticJ3 FranticJ3
22 июн. 2015 г. 17:58:31

Отключите ваши плагины и переключитесь на одну из стандартных тем — Twenty something. Код работает в этом случае?

s_ha_dum s_ha_dum
22 июн. 2015 г. 18:03:50

@s_ha_dum переключился на Twenty Fifteen, обновил его, добавил код и отключил все плагины. У меня всё равно не работает

FranticJ3 FranticJ3
23 июн. 2015 г. 18:28:50
Показать остальные 2 комментариев
Все ответы на вопрос 5
2
14

Я знаю, что этот пост довольно старый, но так как я столкнулся с той же проблемой, а этот пост оказался выше в результатах поиска, чем пост с решением, я решил добавить это решение, которое сработало для меня.

Источник: http://coffeecupweb.com/how-to-exclude-or-hide-categories-from-category-widget-in-wordpress-sidebar/

//Скрытие категорий из виджета категорий WordPress
function exclude_widget_categories($args){
    $exclude = "1,4,8,57,80";
    $args["exclude"] = $exclude;
    return $args;
}
add_filter("widget_categories_args","exclude_widget_categories");
19 янв. 2017 г. 19:38:46
Комментарии

Могу подтвердить, что в марте 2018 года это отлично работало! Дополнительный совет: наведите курсор на категорию на странице категорий и посмотрите на "tag_id" в ссылке внизу вашего браузера. Да, я знаю, что там написано tag_id, но это всё равно относится к категории.

Eric Hepperle - CodeSlayer2010 Eric Hepperle - CodeSlayer2010
3 мар. 2018 г. 22:37:04

Декабрь 2020: Я тоже могу подтвердить, что это отлично работает! Вся эта проблема заставила меня ещё больше осознать, что функция категорий часто отклоняется от своей ориентированности на зрителя из-за тем и плагинов.

Nora McDougall-Collins Nora McDougall-Collins
3 дек. 2020 г. 19:54:24
1

Это работает: https://gist.github.com/peltopiri/76e7d1143e33b424633114103cfae5ec

<?php
function exclude_woocommerce_widget_product_categories($widget_args) {
    //Вставьте здесь ID исключаемых категорий
    $excludes = array(12,33);
    $includes = explode(",",$widget_args['include']);

    $includes = array_filter($includes, function($value) use ($excludes) {
      return !in_array($value, $excludes);
    });
    $widget_args["include"] = implode(",", $includes);
    return $widget_args;
}
add_filter( 'woocommerce_product_categories_widget_dropdown_args', 'exclude_woocommerce_widget_product_categories');
add_filter( 'woocommerce_product_categories_widget_args', 'exclude_woocommerce_widget_product_categories');
18 сент. 2018 г. 18:19:50
Комментарии

Это также работает на страницах подкатегорий.

O. Jones O. Jones
29 мая 2021 г. 00:57:25
0

Как скрыть стандартную категорию "Без категории" в WooCommerce:

Думаю, я не одинок в своём поиске способа скрыть стандартную категорию "Без категории", появившуюся в WooCommerce 3.3.

Если вы здесь по той же причине, вместо жесткого указания ID категории (который может различаться в разных средах/установках), вы можете использовать следующий сниппет, модифицированный из сниппета Майка Джолли, чтобы скрыть её из виджета "Категории товаров WooCommerce":

<?php // Не включайте это, если файл уже открыт!

/**
 * Код нужно поместить в functions.php вашей темы.
 *
 * Если вы используете выпадающий список вместо иерархического вида,
 * подключитесь к следующему фильтру: 
 *      `woocommerce_product_categories_widget_dropdown_args`
 */
add_filter( 'woocommerce_product_categories_widget_args', 'custom_woocommerce_product_categories_widget_args' );

function custom_woocommerce_product_categories_widget_args( $args ) {
  $args['exclude'] = get_option( 'default_product_cat' );
  return $args;
}
9 июл. 2018 г. 11:07:44
0

После нескольких поисков и тестов, скрытие категорий записей для элементов списка и выпадающего меню выполняется отдельно, так как они вызываются разными идентификаторами фильтров.

Для элементов списка категорий используйте:

add_filter("widget_categories_args","ВАША_ПОЛЬЗОВАТЕЛЬСКАЯ_ФУНКЦИЯ");

Для элементов выпадающего меню категорий используйте:

add_filter("widget_categories_dropdown_args","ВАША_ПОЛЬЗОВАТЕЛЬСКАЯ_ФУНКЦИЯ");

Ссылка: https://basicwp.com/exclude-categories-from-category-widgets-in-wordpress/

26 февр. 2019 г. 13:02:47
1

Мне удалось скрыть одну категорию с помощью CSS:

li.cat-item-1 {
    display: none;
}

Я добавил этот CSS-код в раздел "Дополнительный CSS" своей темы.

Категория 1 — это "Без рубрики", именно её я и хотел скрыть.

27 дек. 2019 г. 22:18:21
Комментарии

Чтобы сделать процесс еще приятнее, скройте категории прямо в настройщике. Это сэкономит вам шаг, избавив от необходимости лезть в папку темы.

klewis klewis
3 авг. 2021 г. 23:14:12