2010-08-17 79 views

回答

3

更改它,當它被使用WordPress,WP查詢數據庫權之前:

$search_replacements = array(
    'find' => 'replace', 
    'find2' => 'replace2', 
    'var' => 'foo' 
); 
function modify_search_term($request_vars) { 
    global $search_replacements; 
    if (!empty($request_vars['s']) && !empty($search_replacements[$request_vars['s']])) { 
     $request_vars['s'] = $search_replacements[$request_vars['s']]; 
    } 
    return $request_vars; 
} 
add_filter('request', 'modify_search_term'); 

這將允許您處理儘可能多的條件,你能想起來,並加入到$替換陣列。

add_filter中的99會讓它延遲運行,以便您是最後一次對查詢進行更改(可能很重要,具體取決於您安裝的其他插件)。

您的網址仍然會顯示原始字詞,但您可以節省頁面加載。如果你的網站流量很大,那麼你不想重定向,只是爲了得到一個漂亮的網址。

+0

其次。我沒有意識到請求掛鉤,但是是的......只有有道理纔會有一個。這絕對是一個更清潔的解決方案,沒有重定向只是爲了在URL中有新的術語。 – Jervis 2010-08-18 14:45:15

0

你不能改變它之前它進入WordPress而不使用htaccess重寫規則。但是,您可以執行的操作是創建自定義過濾器,以使用標準瀏覽器重定向手動將特定搜索字詞重定向到新搜索查詢。我必須在我的示例中使用javascript位置函數,因爲我無法弄清楚如何在將任何內容輸出到瀏覽器之前通過過濾器捕獲搜索變量(從而限制了我使用內置的wordpress重定向函數或標準的能力php頭重定向。)

以下代碼將對「test」進行任何搜索並將其重定向到「smickie」搜索。這很快就會變得很骯髒,所以你需要修改它來顯然滿足你的需求,但希望這可以讓你開始朝正確的方向發展。

function redirect_searchterm() { 
    if (is_search()) { 
    $search_query = get_search_query(); 
     if ($search_query == "test") { 
     $new_searchquery = "smickie"; 
     ?> 
      <script type="text/javascript"> 
      <!-- 
      location.replace("<?php echo get_option('siteurl') . '/?s=' . $new_searchquery .'&submit=Search'; ?>"); 
      --> 
      </script> 
     <?php 
     } 
    } 
} 
add_action('wp_head', 'redirect_searchterm', 1); 
+0

您可以使用過濾器更改有關查詢的任何內容。它的WordPress - 開發者在被允許進行任何開發之前,應該被迫吟唱「有一個過濾器」。 – Gipetto 2010-08-18 05:51:51