如何使用自定义功能从主题生成的类别下拉列表中排除产品类别?

时间:2019-05-04 15:13:57

标签: php woocommerce

我想从搜索下拉列表中删除“未分类”类别(但我不想将其完全删除)。其中的所有产品都是隐藏的,因此不会出现在搜索结果中,但我不希望该类别显示在搜索下拉列表中。

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吗?

0 个答案:

没有答案