带有类别输入问题的Wordpress Woocommerce自定义搜索

时间:2018-01-04 23:15:11

标签: php jquery wordpress search woocommerce

我在我的默认博客帖子搜索功能中添加自定义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. 然后我创建了两个名为&#34; search-posts.php&#34;的自定义search.php文件。和&#34; search-products.php&#34;

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

视觉体验:)

enter image description here 请不要建议插件 - 我对膨胀不感兴趣。非常感谢你的帮助。

0 个答案:

没有答案