2010-08-17 2 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'); 

Это позволит вам обрабатывать столько условий, сколько вы можете придумать и добавить в массив $ замен ,

99 в add_filter заключается в том, чтобы запустить его поздно, чтобы вы вносили изменения в запрос (может быть важно в зависимости от того, какие другие плагины вы установили).

Ваш URL-адрес будет по-прежнему указывать исходный термин, но вы сохраняете загрузку страницы. Если у вас есть сайт с высоким трафиком, вы не хотите перенаправлять только для получения довольно URL-адреса.

+0

Во-вторых, это. Я не знал о крючке запроса, но да ... только имеет смысл, что он будет один. Это, безусловно, гораздо более чистое решение, нечего перенаправить, чтобы иметь новый термин в URL-адресе. – Jervis

0

Ваш не сможете изменить его до он переходит в wordpress без использования правил перезаписи htaccess. Однако вы можете создать настраиваемый фильтр, чтобы вручную перенаправить конкретные поисковые запросы в новый поисковый запрос, используя стандартную переадресацию браузера. Мне пришлось использовать функцию определения javascript в моем примере, потому что я не мог понять, как поймать переменную поиска через фильтр, прежде чем что-либо выводится в браузер (таким образом, ограничивая мою способность использовать встроенную функцию переадресации wordpress или стандартную php header redirect.)

Следующий код проведет любые поиски «теста» и перенаправит его на поиск «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

Смежные вопросы