2010-08-17 4 views

Répondre

3

le changement quand il arrive à WordPress, juste avant WP interroge la base de données:

$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'); 

Cela vous permettra de gérer autant de conditions que vous pouvez penser et ajouter au tableau de remplacement $ . Le 99 dans l'add_filter est pour l'exécuter en retard afin que vous soyez le dernier à apporter des modifications à la requête (pourrait être important en fonction des autres plugins que vous avez installés).

Votre URL indiquera toujours le terme d'origine, mais vous enregistrez un chargement de page. Si vous avez un site à fort trafic, vous ne voulez pas rediriger juste pour obtenir une jolie url.

+0

Ensuite. Je n'étais pas au courant de la demande de crochet, mais oui ... ça n'a de sens que s'il y en avait un. C'est certainement une solution beaucoup plus propre, inutile de rediriger juste pour avoir le nouveau terme dans l'URL. – Jervis

0

Vous ne serez pas en mesure de le changer avant il va dans wordpress sans utiliser les règles de réécriture htaccess. Toutefois, vous pouvez créer un filtre personnalisé pour rediriger manuellement les termes de recherche spécifiques vers de nouvelles requêtes de recherche à l'aide d'une redirection de navigateur standard. J'ai dû utiliser la fonction de localisation javascript dans mon exemple parce que je n'arrivais pas à trouver comment attraper la variable de recherche via un filtre avant que quelque chose ne soit envoyé au navigateur (limitant ainsi ma capacité à utiliser la fonction de redirection wordpress intégrée). redirection php en-tête.)

Le code suivant fera la recherche de "test" et le rediriger vers une recherche "smickie". Cela a été mis en place assez rapidement et sale, donc vous aurez envie de le modifier pour répondre à vos besoins évidemment, mais j'espère que cela peut vous aider à démarrer dans la bonne direction.

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

Vous pouvez modifier n'importe quoi à propos de la requête à l'aide de filtres. Son WordPress - les développeurs devraient être obligés de chanter "il y a un filtre pour ça" avant qu'ils ne soient autorisés à faire du développement. – Gipetto

Questions connexes