Truque muito curto: WordPress, excluídas as páginas de pesquisa e pós

O interior do motor do WordPress utilizado para a investigação (o padrão sem a adição de plug-in) realiza um clássico de baixo nível query_post() . A pesquisa é dapperttutto sem exclusão. Este recurso pode ser controlada, no entanto, permitindo, por exemplo, para pesquisar em todo exceto em categorias especiais, páginas ou posts. Existem várias maneiras de "filtrar" a busca padrão do WordPress, um filtro é sfruutando pre_get_posts :

1
2
3
4
5
6
7
8
9
10
11
12
/ **
* Digite este código no arquivo functions.php
* Exclui as páginas de pesquisa / posts com ID de 26,27 e 32
* /
$query ) { search_filter função ($ query) {
$query -> is_search ) { if ($ query -> is_search) {
set ( 'post__not_in' , array ( 26 , 27 , 32 ) ) ; $ Query -> set ('post__not_in', série (26, 27, 32));
}
; return $ query;
}

, 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter');

Este filtro é interessante e permite-lhe realizar várias atividades em nossa pesquisa. Ao analisar a entrada de parâmetros $query você pode ter uma idéia sobre o que você pode fazer:

1
2
3
4
5
6
7
8
9
10
$query ) { search_filter função ($ 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');

Por exemplo, você pode excluir determinadas categorias de pesquisa:

1
2
3
4
5
6
7
8
9
10
11
12
/ **
* Digite este código no arquivo functions.php
* Exclui a categoria com ID 14
* /
$query ) { search_filter função ($ query) {
$query -> is_search ) { if ($ query -> is_search) {
set ( 'cat' , '-14' ) ; $ Query -> set ('gato', '-14');
}
; return $ query;
}

, 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter');

. A primeira if no código que determina como nós, neste caso search . Isto significa que podemos aplicar esse filtro em outros contextos, tais como:

1
2
3
4
5
6
7
8
9
10
11
12
/ **
* Digite este código no arquivo functions.php
* Exclui a categoria com id 14 da Alimentação
* /
$query ) { search_filter função ($ query) {
$query -> is_feed ) { if ($ query -> is_feed) {
set ( 'cat' , '-14' ) ; $ Query -> set ('gato', '-14');
}
; return $ query;
}

, 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter');

3 comentários para "Muito curto truque: WordPress, excluídas as páginas de pesquisa e pós"

  1. 08 de julho de 2009 Undolog.com truque "muito curto: Wordpress, excluir páginas e pós ... :

    [...] Veja o artigo original mais: truque "Undolog.com muito curto: WordPress, excluir páginas e pós ... Artigos relacionados: Muito curto truque: páginas pais e filhas páginas em WordPress [...]

  2. 9 de outubro de 2011 Matt :

    Muito interessante. Mas eu precisaria de mais uma coisa: pesquisa atual também verifica o texto da página / post. Como posso mudar isso, porque não olhar dentro do conteúdo de texto é limitada, mas, por exemplo, para procurar apenas o título ea tag?

  3. 10 de outubro de 2011 Giovambattista Fazioli :

    @ Matt:: Pesquisar no único título, o que eu sei, você pode regular as condições em que gerados durante a pesquisa. Se você tentar colocar no arquivo functions.php o seguinte código:

    1
    2
    3
    4
    5
    6
    7
    8
    $where ) { função exclude_post_content ($ onde) {
    is_search ( ) ) { if (is_search ()) {
    '/OR\s*\(\w+\.post_content\s+LIKE\s*(\'[^\']+\')\s*\)/' ; $ Pattern = '/ OU \ s * \ (\ w + \ Post_content \ s + COMO \ s * (\ ". [^ \"] + \') \ S * \) / ';
    preg_replace ( $pattern , "" , $where ) ; Onde $ = preg_replace ($ pattern, "", $ where);
    }
    ; return $ onde;
    }
    , 'exclude_post_content' ) ; add_filter ('posts_where', 'exclude_post_content');

    Praticamente eliminar codizioni conteúdo da investigação a partir funcionando normalmente selecionar WordPress.

    Para a 'tag' o problema é semelhante ao encontrado exemplos nell'artiolo, que irá utilizar o filtro pre_get_posts . Por exemplo, se você quiser pesquisar somente nos posts tagged 'first-tags', use:

    1
    2
    3
    4
    5
    6
    7
    $query ) { search_filter função ($ query) {
    $query -> is_search ) { if ($ query -> is_search) {
    set ( 'tag' , 'prima-tag' ) ; $ Query -> set ('tags', 'primeiro-tags');
    }
    ; return $ query;
    }
    , 'search_filter' ) ; add_filter ('pre_get_posts', 'search_filter');

Deixe um comentário

XHTML PERMIT TAG: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> CÓDIGO DE INSERÇÃO:
 <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