带有类别输入问题的 WordPress WooCommerce 自定义搜索

问题描述 投票:0回答:0

除了我的默认博客文章搜索功能之外,我正在构建一个自定义 WooCommerce(产品)搜索表单。我将在同一页面上显示两个搜索表单。搜索表单还应允许在通过下拉列表选择的预定义产品类别中进行搜索。不幸的是,在下拉列表中设置类别后,在类别中进行搜索始终不会返回任何结果。无论是否输入搜索短语。如果没有输入搜索短语,它至少应该显示所选类别的产品。知道如何解决我的问题或实现我的目标的更好方法吗?

1. 我将以下代码放入我的 functions.php 以返回我的自定义帖子类型(产品)的类别下拉列表

    function test_dropdown_product_categories($show_option_none, $name, $selected = '') {
        return apply_filters('test_dropdown_product_categories', wp_dropdown_categories(array('hierarchical' => true, 'taxonomy' => 'product_cat', 'show_option_none' => $show_option_none, 'exclude' => '1', 'hide_empty' => 0, 'name' => $name, 'orderby' => 'name', 'selected' => $selected, 'echo' => 0, 'class' => 'form-control')));  
    }

2. 为了分隔两个 html 搜索表单,我使用了不同的 ID(s1 和 s2)和值(1 和 2)。两种形式都工作正常。以下是自定义帖子类型产品的表格

    <form method="get" id="s2" action="<?php echo home_url('/'); ?>" class="form-inline">
        <input class="form-control input-sm" type="search" name="s" value="<?php the_search_query(); ?>" placeholder="<?php _e('Enter search phrase...', 'test'); ?>" />
            <?php
                echo test_dropdown_product_categories(__('All categories', 'test'), 'category', intval(isset($_GET['category'])));
            ?>          
            <input type="hidden" id="s2" name="filter" value="2" />
        <button class="button btn-test" type="submit"><?php _e('Start Searching', 'test'); ?></button>
    </form>

3. 然后我创建了两个名为“search-posts.php”和“search-products.php”的自定义 search.php 文件

4. 要使用正确的自定义搜索文件,我将以下内容放入 search.php 文件中

    <?php
        if(isset($_GET['filter'])) {
            $type = $_GET['filter'];
                if($type == '1') {
                load_template( dirname( __FILE__ ) . '/search-posts.php');
            } elseif($type == '2') {
                load_template( dirname( __FILE__ ) . '/search-products.php');
            }
        }
    ?>

5.然后我用下面的代码过滤search-products.php中的搜索

    <?php
    if (isset($_GET['filter']) && $_GET['filter'] == '2') {
        $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
        
        if (isset($_GET['category']) && $_GET['category'] != '-1') {
            $args_category = array(
                'category__in' => intval($_GET['category'])
            );
        } else {
            $args_category = array();
        }       
        
        $orderby = ''; // To remove Notice ERROR when "WP-DEBUG" is "true"
        $args = array(
            's' => get_search_query(),
            'orderby' => $orderby,
            'order' => $order,
            'post_type' => 'product',
            'meta_key' => $meta_key,
            'paged' => $paged
        );

        $args = array_merge($args_category, $args);
                    
        query_posts($args);                     
    }

    get_template_part('index', 'test');
?>

6. 以下网址是我在产品类别中搜索后生成的 - 但没有任何结果

    mysite.com/online-shop/?s=&category=23&filter=2
    mysite.com/online-shop/?s=test&category=23&filter=2

为了视觉体验:)

请不要推荐插件——我对膨胀不感兴趣。非常感谢您的帮助。

php jquery wordpress search woocommerce
© www.soinside.com 2019 - 2024. All rights reserved.