Très court astuce: WordPress, exclus de pages de recherche et post

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

3 commentaires à "truc très court: WordPress, exclus à partir des pages de recherche et post»

  1. 8 juillet 2009 Undolog.com "truc très court: Wordpress, d'exclure des pages et après ... :

    [...] 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 [...]

  2. 9 octobre 2011 Matt :

    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?

  3. 10 octobre 2011 Giovambattista Fazioli :

    @ 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.php le code suivant:

    1
    2
    3
    4
    5
    6
    7
    8
    $where ) { Fonction exclude_post_content ($ où) {
    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:

    1
    2
    3
    4
    5
    6
    7
    $query ) { Fonction search_filter ($ query) {
    $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');

Laisser un commentaire

XHTML TAG PERMIS: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CODE D'INSERTION:
 <pre></pre> // blocco generico <code></code> // blocco generico [cc_actionscript][/cc_actionscript] // Actionscript [cc_actionscript3][/cc_actionscript3] // Actionscript 3 [cc_css][/cc_css] // CSS Style Sheet [cc_html][/cc_html] // HTML [cc_js][/cc_js] // Javascript [cc_objc][/cc_objc] // Objective-C [cc_php][/cc_objc] // PHP [cc_sql][/cc_sql] // SQL