簡體   English   中英

分類的Woocommerce產品搜索

[英]Woocommerce Product Search with Taxonomy

嗨,您有一個搜索表單,該表單允許用戶輸入關鍵字,然后通過下拉列表選擇分類。 這是我的表格:

    <form name="myCity" id="myCity" action="http://mywebsite.com/"  method="post">

<div class="search-area">

    <div class="container">

        <div class="row-fluid">
           <div class="span4">
                <label><i class="icon-search"></i></label>
                <div class="search-area-division search-area-division-input">
                    <input type="text" value="<?php echo get_search_query(); ?>" name="s" id="s" placeholder="I am searching for..."/>

                </div>
            </div>
            <div class="span3">
                <label><i class="icon-map-marker"></i></label>

            <?php
$args = array('taxonomy' => 'pa_city');
wp_dropdown_categories( $args );
    ?>

            </div>
        </div>           
                <noscript><input type="hidden" onclick="WriteCookie()" class="btn btn-block btn-white search-btn"  value="<?php echo esc_attr__( 'Search' ); ?>"/></noscript>
                <input type="hidden" name="post_type" value="product" />

    </div>
    </div>

如果我在布爾黑德市搜索迷你高爾夫,

它返回URL: http : //mywebsite.com/?s=mini-golf&cat=14&post_type=product

當它返回帶有迷你高爾夫球標簽的產品時,它將返回所有與迷你高爾夫球匹配的產品,無論城市是什么。 我已經嘗試了多種方法來過濾結果,並且此時我只能旋轉輪子。

我使用的分類法是pa_city。 即使網址是http://mywebsite.com/?s=mini-golf&pa_city=bullhead-city&post_type=product

它做同樣的事情。

無論我以哪種方式編寫,它都不會排除搜索中的其他城市。 我應該嘗試NOTIN嗎? 我不知道為什么它將帶來所有產品,而不論城市...

我需要使用pre_get_posts在我的functions.php中進一步過濾查詢

哇,那真令人沮喪。

    function my_location( $q ){
if (!$q->is_main_query() ) 
    return;
if ($q->is_search()) {
            $city = isset( $_COOKIE['city'] ) ? $_COOKIE['city'] : 'not set';

        $q->set( 'tax_query', array(array(          'taxonomy' => 'pa_city',            'field' => 'slug',          'terms' => array( $city ),          'operator' => 'IN'      )));    
    return; 
    }
if ($q->is_archive() ){ 
    if ( ! is_admin() ) {           
            if (empty($_COOKIE['city'] )) {
                echo "<script>window.location.href = 'http://mywebsite.com/select-city/';</script>";
                exit();
            }
        $city = isset( $_COOKIE['city'] ) ? $_COOKIE['city'] : 'not set';

        $q->set( 'tax_query', array(array(          'taxonomy' => 'pa_city',            'field' => 'slug',          'terms' => array( $city ),          'operator' => 'IN'      )));    
    }}
}

    add_action( 'pre_get_posts', 'my_location' );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM