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










[...] 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 [...]
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?
@ 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.phpo seguinte código: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 + 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:2
3
4
5
6
7
$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');