Я хотел бы удалить категорию «Без категории» из списка поиска (но я не хочу полностью ее удалять). Все продукты в нем скрыты, поэтому они не отображаются в результатах поиска, но я не хочу, чтобы категория отображалась в раскрывающемся списке поиска.
В пределах function shopstore_top_product_search
У меня есть эта часть, которая генерирует список категорий продуктов для отображения:
<div class="search-categories">
<div class="search-cat">
<?php
$args = array(
'taxonomy' => 'product_cat',
'orderby' => 'name',
'show_count' => '0',
'pad_counts' => '0',
'hierarchical' => '1',
'title_li' => '',
'hide_empty' => '0',
);
$all_categories = get_categories( $args );
$selected = ( isset( $_GET['category'] ) && $_GET['category'] != "" ) ? sanitize_text_field( $_GET['category'] ) : '';
?>
<select class="category-items" name="category">
<option value="0">
<?php esc_html_e('All Categories','shopstore') ?>
</option>
<?php foreach( $all_categories as $category ) { ?>
<option value="<?php echo esc_attr( $category->slug ); ?>" <?php echo ( $category->slug == $selected ) ? 'selected="selected"' : '';?> ><?php echo esc_html( $category->cat_name ); ?></option>
<?php } ?>
</select>
</div>
</div>
Чтобы не нужно было изменять файл и помещать копию в дочернюю тему, я подумал, что смогу добавить пользовательскую функцию к функциям своей дочерней темы (чтобы все было аккуратно) по следующим направлениям:
add_filter( 'shopstore_top_product_search_args', 'custom_shopstore_top_product_search_args' );
function custom_shopstore_top_product_search_args( $args ) {
$args['exclude'] = get_option( 'default_product_cat' );
return $args;
}
Возможно ли это сделать (вышеописанное не сработало)? Или мне нужно изменить параметры $args
? Или лучше добавить / изменить оператор if
, чтобы отфильтровать категорию из списка?
Кроме того, возможно ли переопределить 'hide_empty' => '0'
, чтобы оно было истинным, без изменения файла?