L'intérieur du moteur de WordPress utilisés pour la recherche (la norme sans l'ajout de plug-in) effectue un classique de bas niveau query_post() . La recherche est dapperttutto sans exclusion. Cette fonctionnalité peut être contrôlé, cependant, permettant, par exemple, pour rechercher tous les cours sauf dans des catégories spéciales, pages ou messages. Il ya plusieurs façons de «filtrer» la recherche standard de WordPress, un filtre est sfruutando pre_get_posts :
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * Entrez ce code dans le fichier functions.php * Exclut les pages de recherche / messages avec id 26,27 et 32 * / $query ) { Fonction search_filter ($ query) { $query -> is_search ) { if ($ query -> is_search) { set ( 'post__not_in' , array ( 26 , 27 , 32 ) ) ; $ Query -> set ('post__not_in', array (26, 27, 32)); } ; return $ query; } , 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter'); |
Ce filtre est intéressant et vous permet d'effectuer diverses activités sur notre requête de recherche. En analysant le paramètre d'entrée $query vous pouvez avoir une idée sur ce que vous pouvez faire:
1 2 3 4 5 6 7 8 9 10 | $query ) { Fonction search_filter ($ query) { $query -> is_search ) { if ($ query -> is_search) { ; echo '<pre>'; $query ) ; print_r ($ query); ; echo '</ pre>'; } ; return $ query; } , 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter'); |
Par exemple, vous pouvez exclure des catégories particulières de recherche:
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * Entrez ce code dans le fichier functions.php * Exclut la catégorie avec l'id 14 * / $query ) { Fonction search_filter ($ query) { $query -> is_search ) { if ($ query -> is_search) { set ( 'cat' , '-14' ) ; $ Query -> set ('chat', '-14'); } ; return $ query; } , 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter'); |
. La première if dans le code qui détermine la façon dont nous, dans ce cas search . Cela signifie que nous pouvons appliquer ce filtre dans d'autres contextes, tels que:
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * Entrez ce code dans le fichier functions.php * Exclut la catégorie avec l'id 14 à partir de RSS * / $query ) { Fonction search_filter ($ query) { $query -> is_feed ) { if ($ query -> is_feed) { set ( 'cat' , '-14' ) ; $ Query -> set ('chat', '-14'); } ; return $ query; } , 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter'); |










[...] Voir l'article original encore: Undolog.com "truc très court: WordPress, d'exclure des pages et après ... Articles connexes: truc très courts: les pages les pères et les pages filles sur WordPress [...]
Très intéressant. Mais j'aurais besoin d'une chose: les recherches actuelles scanne également le texte de la page / post. Comment puis-je le changer parce qu'ils ne regardent pas à l'intérieur du contenu du texte est limitée mais, par exemple pour rechercher uniquement le titre et la balise?
@ Matt:: Rechercher dans le titre seulement, que je connais, vous pouvez régler les conditions où générée lors de la recherche. Si vous essayez de mettre dans le fichier
functions.phple code suivant:2
3
4
5
6
7
8
is_search ( ) ) { if (is_search ()) {
'/OR\s*\(\w+\.post_content\s+LIKE\s*(\'[^\']+\')\s*\)/' ; $ Pattern = '/ ou \ s * \ (\ w + \ post_content \ s + comme \ s * (\.' [^ \ '] + \') \ S * \) / ';
preg_replace ( $pattern , "" , $where ) ; Où $ = preg_replace ($ pattern, "", $ où);
}
; return $ où;
}
, 'exclude_post_content' ) ; add_filter ('posts_where', 'exclude_post_content');
Pratiquement éliminer le contenu des recherches codizioni de courir normalement sélectionner WordPress.
Pour le 'tag' la question est similaire à des exemples trouvés nell'artiolo, qui va utiliser le filtre
pre_get_posts. Par exemple, si vous souhaitez rechercher uniquement dans le Posts Tagged 'première tags », utilisez:2
3
4
5
6
7
$query -> is_search ) { if ($ query -> is_search) {
set ( 'tag' , 'prima-tag' ) ; $ Query -> set ('tags', 'premier-tags »);
}
; return $ query;
}
, 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter');