WordPress自定义搜索表单(WooCommerce产品类别)

时间:2018-11-16 13:43:51

标签: php wordpress woocommerce

有人可以帮忙吗?

为什么这不起作用?

<form role="search" method="get" action="/">
    <input type="text" name="s" placeholder="Search">
    <input type="hidden" name="post_type" value="product">
  <input type="hidden" value="product_cat" name="the-journal-of-stained-glass" />
    <input type="submit" value="Go">
</form>

“应该”过滤出仅在指定产品类别中的搜索结果,但不是。

1 个答案:

答案 0 :(得分:0)

您好,您在提供类别值的输入字段中的名称位置和在您提供名称的值位置中的名称位置输入了错误的代码。请尝试以下操作。

<form role="search" method="get" action="/">
    <input type="text" name="s" placeholder="Search">
    <input type="hidden" name="post_type" value="product">
  <input type="hidden" name="product_cat" value="the-journal-of-stained-glass" />
    <input type="submit" value="Go">
</form>

请在您的functions.php中添加以下内容,以用您的分类法替换分类法

function wc_hide_selected_terms( $terms, $taxonomies, $args ) {
    $new_terms = array();
    if ( in_array( 'product_cat', $taxonomies ) && !is_admin() && is_shop() ) {
        foreach ( $terms as $key => $term ) {
              if ( ! in_array( $term->slug, array( 'uncategorized' ) ) ) {
                $new_terms[] = $term;
              }
        }
        $terms = $new_terms;
    }
    return $terms;
}
add_filter( 'get_terms', 'wc_hide_selected_terms', 10, 3 );

function advanced_search_query($query) {

        if($query->is_search()) {
            // category terms search.
            if (isset($_GET['product_cat']) && !empty($_GET['product_cat'])) {
                $query->set('tax_query', array(array(
                    'taxonomy' => 'product_cat',
                    'field' => 'slug',
                    'terms' => $_GET['product_cat']) 
                ));
            }    
        }
        return $query;
    }
    add_action('pre_get_posts', 'advanced_search_query', 1000);