Le moteur WordPress intérieure exploités pour la recherche (le standard sans ajout de plugin) effectue un faible niveau classique query_post() . La recherche est effectuée dapperttutto sans exclusion. Cette caractéristique peut être commandé, cependant, ce qui permet, par exemple, pour effectuer une recherche sur tous, mais en particulier des catégories, des pages ou publiez. Il ya plusieurs façons de «filtrer» la recherche standard de WordPress, on est sfruutando le filtre pre_get_posts :
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * S'il vous plaît entrer ce code dans le fichier functions.php * Exclure les pages de recherche / id de poste avec 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 », tableau (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 tâches 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 spécifiques de recherche:
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * S'il vous plaît entrer 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 sommes, dans ce cas search . Cela signifie que nous pouvons appliquer ce filtre aussi dans d'autres contextes, tels que:
1 2 3 4 5 6 7 8 9 10 11 12 | / ** * S'il vous plaît entrer ce code dans le fichier functions.php * Exclut la catégorie avec 14 Identifiant de l'alimentation * / $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 '); |










[...] En outre consulter l'article original: Undolog.com »Très court astuce: WordPress, exclure des pages et des postes ... Articles connexes: Très court astuce: les pères pages et des pages d'enfants dans WordPress [...]
Très intéressant. Mais j'aurais besoin d'une chose: la recherche effectue actuellement la numérisation sur le texte de la page / post. Comment puis-je changer parce qu'il ne regarde pas à l'intérieur du contenu textuel, mais simplement comme une recherche uniquement dans le titre et dans les balises?
@ Matthieu :: de rechercher uniquement dans le titre, ce que je sais, vous pouvez agir sur les conditions de l'endroit où généré 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 ( ) ) { si (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, "", $ where);
}
; return $ où;
}
, 'exclude_post_content' ) ; add_filter ('posts_where', 'exclude_post_content');
Dans la pratique élimine le contenu de la recherche unpowered de sélection fonctionne normalement WordPress.
Pour 'tag' la question est similaire aux exemples qui sont nell'artiolo, c'est à dire les filtero userie
pre_get_posts. Par exemple, si vous souhaitez rechercher uniquement dans les Posts Tagged 'premier-tags', utilisez:2
3
4
5
6
7
$query -> is_search ) { if ($ query -> is_search) {
set ( 'tag' , 'prima-tag' ) ; $ Query -> set ('tags', 'premier-tag');
}
; return $ query;
}
, 'search_filter' ) ; add_filter («pre_get_posts», «search_filter ');
Bonjour, article très intéressant. J'aurais besoin de quelque chose de similaire, mais avec quelques modifications. Dans une page de produit j'ai un bouton qui devrait effectuer une recherche qui renvoie les recettes à base de ce produit. Comment puis-je m'assurer qu'ils ne sont que les résultats (qui ne sont rien de plus qu'un post) en omettant la page du produit lui-même et ne change pas la recherche générale du site?
Merci
Merci qu'elle devrait être, c'était juste ce que je voulais.
Bonjour bel article ... Je construis un site gratuit et également utiliser qtranslate. Le problème est que la recherche de wordpress je rapporte les résultats de la recherche dans la langue par défaut. Même chose pour les résultats de la catégorie multiples widgets. J'espère que vous pourrez m'aider.