Скрытие определенных категорий из виджета категорий
Я пытаюсь скрыть большое количество категорий из моего виджета категорий. Я пробовал несколько плагинов, но ни один из них не позволяет использовать опцию выпадающего списка. Я изучил хук 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 моей темы. Это не должно иметь значения, даже несмотря на то, что функция предназначена для плагинов, верно?
Я знаю, что этот пост довольно старый, но так как я столкнулся с той же проблемой, а этот пост оказался выше в результатах поиска, чем пост с решением, я решил добавить это решение, которое сработало для меня.
Источник: 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");

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

Это работает: 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');

Как скрыть стандартную категорию "Без категории" в 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;
}

После нескольких поисков и тестов, скрытие категорий записей для элементов списка и выпадающего меню выполняется отдельно, так как они вызываются разными идентификаторами фильтров.
Для элементов списка категорий используйте:
add_filter("widget_categories_args","ВАША_ПОЛЬЗОВАТЕЛЬСКАЯ_ФУНКЦИЯ");
Для элементов выпадающего меню категорий используйте:
add_filter("widget_categories_dropdown_args","ВАША_ПОЛЬЗОВАТЕЛЬСКАЯ_ФУНКЦИЯ");
Ссылка: https://basicwp.com/exclude-categories-from-category-widgets-in-wordpress/
