我想从搜索下拉列表中删除“未分类”类别(但我不想将其完全删除)。其中的所有产品都是隐藏的,因此不会出现在搜索结果中,但我不希望该类别显示在搜索下拉列表中。
在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'
改写为true吗?