2010-06-11 7 views
1

Existe-t-il un moyen d'écraser la fonction de recherche par défaut dans wordpress? J'ai essayé d'utiliser les filtres, mais ils permettent seulement d'ajouter à la requête ... ou éventuellement de réécrire toute la requête en utilisant posts_request. Si je remplace cela, aucune autre requête ne fonctionnera. J'ai le code suivantremplacer la fonction de recherche dans wordpress (sql et php)

function my_posts_request_filter($input) 
{ 
    if (is_search() && isset($_GET['s'])) { 
     global $wpdb; 
    } 
    return $input; 
} 

add_filter('posts_request','my_posts_request_filter'); 

je pouvais passer outre $ entrée avec mon SQL personnalisé, mais il y a un widget sur la page qui affiche les messages récents et qui ne montreraient pas si je le fais. Y a-t-il un moyen d'écraser juste la fonction de recherche?

Répondre

3

Ce n'est pas l'épreuve des balles, mais en supposant que le premier WP_Query appel à la requête de recherche (il pourrait être un scénario où un plugin appelle avant WordPress fait, mais il est peu probable), vous pouvez enlever le filtre une fois la fonction s'exécute.

function my_posts_request_filter($input) 
{ 
    if (is_search() && isset($_GET['s'])) { 
     global $wpdb; 

     // do your funky SQL 

     remove_filter('posts_request','my_posts_request_filter'); 
    } 
    return $input; 
} 
+0

merci beaucoup! c'est fait le tour. Je ne pense pas que vous sachiez COMMENT cela fonctionne? J'ai remplacé $ input avec mon SQL personnalisé et cela fonctionne - montrant les messages. Mais, c'est TRÈS spécifique. Je voudrais aussi faire la recherche générale. (qui recherche les mots par défaut) –

+0

Existe-t-il un moyen de faire mon SQL personnalisé et ensuite de faire le $ input SQL? –

+0

Désolé Matt, je ne suis pas sûr de ce que vous voulez dire? – TheDeadMedic