\SWP_Query
Sumário
\SWP_Query, uma alternativa a \SearchWP\Query com algumas diferenças importantes:
- O design e a implementação são modelados após
WP_Query. - Como resultado, independentemente da configuração de
\SearchWP\Engine, os resultados serão limitados a\SearchWP\Sources baseados emWP_Post, por exemplo, Posts, Páginas, Mídia e Tipos de Postagem Personalizados.
Uso Básico
\SWP_Query pode ser usado da mesma forma que você usaria (e em alguns casos, substituindo o uso de) WP_Query:
| <?php | |
| //@link https://searchwp.com/documentation/classes/swp_query/ | |
| global $post; | |
| $swp_query = new SWP_Query( [ | |
| 's' => 'coffee', // Search query. | |
| 'engine' => 'default', // Engine name. | |
| ] ); | |
| if ( $swp_query->have_posts() ) { | |
| while ( $swp_query->have_posts() ) : | |
| $swp_query->the_post(); | |
| ?> | |
| <div class="search-result"> | |
| <h3><a href="<?php echo get_permalink(); ?>"> | |
| <?php the_title(); ?> | |
| </a></h3> | |
| <?php the_excerpt(); ?> | |
| </div> | |
| <?php | |
| endwhile; | |
| wp_reset_postdata(); | |
| } else { | |
| ?> | |
| <p>No results found.</p> | |
| <?php | |
| } |
Observação: Existem algumas ressalvas, pois \SWP_Query não tem paridade de recursos com WP_Query. Consulte esta documentação que descreve quais métodos e propriedades estão disponíveis para você.
Observe também: Como \SWP_Query foi projetado para ser (na maioria) interoperável com WP_Query, pode haver momentos (por exemplo, quando não há parâmetro s (consulta de pesquisa)) em que você pode usar WP_Query novamente para recuperar seus resultados, assim:
| <?php | |
| // @link https://searchwp.com/documentation/classes/swp_query/ | |
| global $post; | |
| $args = [ | |
| 's' => get_search_query(), | |
| 'tax_query' => [ [ | |
| 'taxonomy' => 'people', | |
| 'field' => 'slug', | |
| 'terms' => 'bob', | |
| ] ], | |
| ]; | |
| // If a search query is present use SWP_Query | |
| // else fall back to WP_Query | |
| if ( ! empty( $args['s'] ) ) { | |
| $swp_query = new SWP_Query( $args ); | |
| } else { | |
| $swp_query = new WP_Query( $args ); | |
| } | |
| // Loop through results. | |
| if ( $swp_query->have_posts() ) { | |
| while ( $swp_query->have_posts() ) : | |
| $swp_query->the_post(); | |
| ?> | |
| <div class="search-result"> | |
| <h3><a href="<?php echo get_permalink(); ?>"> | |
| <?php the_title(); ?> | |
| </a></h3> | |
| <?php the_excerpt(); ?> | |
| </div> | |
| <?php | |
| endwhile; | |
| wp_reset_postdata(); | |
| } else { | |
| ?> | |
| <p>No results found.</p> | |
| <?php | |
| } |
Argumentos
Ao instanciar um novo \SearchWP\Attribute, um array com os seguintes itens pode ser fornecido:
s(string)- Consulta de pesquisa. (padrão:
'') - engine (string)
- Nome do
\SearchWP\Engine. (padrão:'default') posts_per_page(integer)- Número de posts a serem retornados por página. (padrão:
get_option( 'posts_per_page' )) load_posts(boolean)- Se deve retornar resultados como
WP_Posts. (padrão:true) - fields (string)
- Se deve retornar
"all"ou"ids". (padrão:"all") nopaging(boolean)- Se deve desabilitar a paginação e retornar todos os resultados. (padrão:
false) - page (integer)
- Qual página de resultados retornar. (padrão:
null) paged(integer)- Qual página de resultados retornar. (padrão: 1)
post__in(integer[])- Limite o pool de pesquisa para estes IDs (padrão:
[]) post__not_in(integer[])- Limite o pool de pesquisa para estes IDs (padrão:
[]) post_type(string[])- Limite os resultados a estes Tipos de Postagem (padrão:
[]) post_status(string[])- Limite os resultados a estes status de postagem (padrão:
[]) tax_query([])- Veja
tax_query(padrão:[]) meta_query([])- Veja
meta_query(padrão:[]) date_query([])- Veja
date_query(padrão:[]) order(string)- Retorna resultados em ordem
"ASC"ou"DESC". (padrão:"DESC") orderby(string)- Retorna resultados ordenados por
"relevance","date"ou"rand". (padrão:"relevance")
Métodos
Observação: Existem magic getters e setters disponíveis para propriedades.
get_search_results()- Atualiza o conjunto de resultados com base nas propriedades atuais.
get_posts()- Retorna o conjunto de resultados atual.
Hooks
Existem vários hooks disponíveis para modificar ainda mais o comportamento de \SWP_Query:

