2011-12-26 64 views
0

在wordpress主題我已經基於自定義分類設置一些搜索過濾器,將使用URL結構類似查詢職位:的WordPress/PHP:添加搜索串到現有的查詢字符串

http://myblog.com/?taxonomy1=term1+term2&taxonomy2=term3+term4 

除這些過濾器我想集成文本搜索,但不知道如何將搜索查詢(例如?s=mysearchhere)附加到現有的分類查詢中。因此,在總我想要的形式,在提交,導致它結合了兩個字符串的URL:

「http://myblog.com/?taxonomy1=term1+term2 & taxonomy2 = TERM3 + term4 & S = mysearchhere」

到目前爲止,我已經試過了具有以下功能生成的搜索表單:

function remove_querystring_var($url, $key) { 
     $url = preg_replace('/(.*)(?|&)' . $key . '=[^&]+?(&)(.*)/i', '$1$2$4', $url . '&'); 
     $url = substr($url, 0, -1); 
     return $url; 
    } 

function apl_search_form($echo = true) { 
    do_action('get_search_form'); 

    $search_form_template = locate_template('searchform.php'); 
    if ('' != $search_form_template) { 
     require($search_form_template); 
     return; 
    } 

    $url = $_SERVER["REQUEST_URI"]; 
    $action = remove_querystring_var($url,'s'); 


    $form = '<form role="search" method="get" id="searchform" action="' . $action . '" > 
    <div><label class="screen-reader-text" for="s">' . __('Search for:') . '</label> 
    <input type="text" value="' . get_search_query() . '" name="s" id="s" /> 
    <input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" /> 
    </div> 
    </form>'; 

    if ($echo) 
     echo apply_filters('get_search_form', $form); 
    else 
     return apply_filters('get_search_form', $form); 
} 

這似乎並不奏效。這個問題比我看起來更復雜嗎?還是我在正確的軌道上?有誰知道這種直接的編碼方式嗎?

非常感謝!

+0

你能更具體地說「似乎沒有工作嗎?」您的表單值將自動添加到網址上,您正在進行「獲取」和「發佈」。 – 2011-12-27 04:17:55

回答

2

您可以附加的搜索詞您的網址與&,這樣

&s=mysearchhere 

數據的第一位主URL以啓動後「?」那麼對於每一個額外的數據位,它總是附加'&'。你永遠不需要'&?'一起。

而且隨着

$query = $_GET['s']; 

檢索它也許這會有所幫助。

1

我剛碰到這個確切的問題,並找到了解決方案。

爲了澄清這個問題,說你有一個搜索表單:

<form method="get" action="http://myblog.com/?taxonomy1=term1"> 
<input type="text" name="keyword" /> 
</form> 

注意,鍵/值taxonomy1 =字詞1是動作URL的一部分。

現在說用戶然後搜索「asdf」。這是我天真地期望的網址是:

http://myblog.com/?taxonomy1=term1&keyword=asdf 

這裏是什麼URL實際上是:

http://myblog.com/?keyword=asdf 

具有鍵/值對URL的一部分「taxonomy1 =術語」變剝離。

到「添加查詢字符串返回」的方式是一個隱藏的輸入字段添加到您的形式:

<input type="hidden" name="taxonomy1" value="term" /> 

要更多的參數添加到您的查詢字符串,你可以添加的輸入任意號碼類型隱藏,像這樣:

<input type="hidden" name="taxonomy1" value="term" /> 
<input type="hidden" name="taxonomy2" value="term3" /> 

我剛剛證實了這一點,所以我敢肯定它的工作原理!