Como usar a classe WP_Query no WordPress?

Publicados: 2024-08-09

Índice
O que é WP_Query?
Uma breve nota sobre WP_Query
Como você pode utilizar WP_Query?
WP_Query Vs query_posts(): Qual é preferível?
Alguns exemplos de uso de WP_Query
Conclusão

O que é WP_Query?

WP_Query é uma classe PHP poderosa no WordPress que permite construir consultas personalizadas para o conjunto de dados para recuperar postagens e outros conteúdos e renderizá-los na página. Ele fornece uma maneira flexível e eficiente de interagir com o banco de dados e buscar conteúdo com base em vários critérios.


Uma breve nota sobre WP_Query

Você deve saber que o WordPress armazena todos os dados do seu site, como postagens, páginas, comentários ou configurações no banco de dados MySQL.

Assim, para quem visita o seu site, é imediatamente enviado um pedido a esta base de dados, recuperando os dados solicitados sejam posts ou páginas para exibir na sua tela.

Mas você deve se surpreender ao saber que com a ajuda do WP_Query, você pode criar consultas que podem ajudá-lo a recuperar informações específicas do seu banco de dados. Portanto, sempre que alguém pesquisa seu conteúdo, o WordPress usa essa classe integrada.

Sem dúvida, você ainda pode usar SQL para escrever todas essas consultas, mas é bastante difícil e não é a maneira mais fácil de fazer isso. Por outro lado, WP_Query é muito mais fácil.

WP_Query é tão útil que você pode criar consultas personalizadas para exibir conteúdo específico em seu site sem que o visitante precise procurá-lo.

Resumindo, WP_Query é uma ferramenta que torna mais fácil para os desenvolvedores controlarem qual conteúdo é exibido em sites WordPress e sua aparência, sem a necessidade de escrever códigos complicados.

Suponha que você crie um tipo especial de conteúdo no WordPress chamado “blog”. Para mostrar essas postagens de “blog” em seu site, você pode escrever uma consulta especial usando WP_Query.

// WP QUERY
$query = new WP_Query([
'post_type' => 'blog', // Type of content
'posts_per_page' => 6, // Number of posts to show
'category_name' => 'Entertainment' // Category filter
]);

Agora, para exibir a consulta solicitada, WP_Query fornece atalhos e funções integradas que ajudam você a personalizar o Loop. The Loop é um pedaço de código PHP que o WordPress usa para exibir postagens em uma página.

O WordPress processa e formata cada postagem de acordo com os critérios definidos em WP_Query (como tipo de postagem, número de postagens e categoria).

Esta ferramenta poderosa ajuda os desenvolvedores a personalizar facilmente como os temas do WordPress exibem o conteúdo sem a necessidade de escrever consultas complexas ao banco de dados


WPOven Dedicated Hosting

Como você pode utilizar WP_Query?

Agora você sabe o que é WP_Query e o que exatamente ele faz. Deixe-nos verificar diferentes cenários de casos em que você pode utilizar esta ferramenta poderosa.

1. Crie Loop em WP_Query

Primeiro, você deve entender o que é Loop. É uma parte do WordPress que é altamente responsiva para buscar dados de postagem e exibi-los em seu site. Ele se concentra principalmente em decidir a aparência do seu conteúdo com base nos modelos do seu tema.

O que o Loop pode mostrar no site?

Dependendo das configurações escolhidas, o Loop pode exibir:

  • Tipos de postagem personalizados e campos personalizados
  • Publique títulos e breves descrições em sua página inicial
  • Conteúdo e comentários de uma única postagem
  • Conteúdo de páginas individuais usando tags de modelo

Para seu melhor entendimento, segue abaixo uma estrutura simples de Loop.

Exemplo de loop básico

<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post();
// Display post content
endwhile;
endif;
?>

  • Aqui, a função have_posts() verifica se há alguma postagem disponível.
  • while ( have_posts() ) : the_post(); : se houver postagens, esse loop será executado para cada postagem e exibirá seu conteúdo.

Personalizando o Loop com WP_Query

Às vezes, você não deseja exibir todas as suas postagens. Você pode usar WP_Query para personalizar o que é mostrado:

<?php
// The Query
$the_query = new WP_Query( $args );

// The Loop
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// No posts found
}
/* Restore original Post Data */
wp_reset_postdata();
?>

Como funciona esse loop personalizado

  • Configurando a consulta : $the_query = new WP_Query( $args ); cria uma consulta personalizada com base nos parâmetros que você definiu (como tipo de postagem, categoria, etc.).
  • Executando o Loop : if ( $the_query->have_posts() ) { ... } verifica se há postagens que correspondem à sua consulta. Se houver, ele exibe o título de cada postagem em uma lista.
  • Redefinindo dados de postagem : wp_reset_postdata(); garante que os dados postais originais sejam restaurados após a execução do loop personalizado.

Opções de personalização

Com WP_Query, você pode:

  • Mostrar postagens de uma categoria, autor ou período específico
  • Exibir postagens com determinadas tags ou campos personalizados

2. Argumentos WP_Query

Quando você deseja obter postagens específicas do seu site WordPress, você precisa criar WP_Query e para isso você precisa incluir quatro partes básicas:

  • Argumento de consulta : informa ao WordPress quais dados recuperar.
  • A consulta : usa o argumento para buscar os dados.
  • The Loop : Processa e exibe cada postagem.
  • Pós-redefinição de dados : redefine os dados após a execução do loop.

Mas um dos componentes mais essenciais do WP_Query é o argumento (frequentemente chamado de WP_Query args) que é responsável por extrair a postagem específica que você deseja obter do banco de dados.

É tão importante que, em vez de mostrar todos os posts, o argumento estabelece condições para mostrar apenas alguns posts.

Exemplo de um argumento

  • A linha $args : é aqui que você inclui seu argumento de consulta.
  • Estrutura : você coloca certos parâmetros em um array. Aqui está um exemplo básico,

$args = array(
'parameter1' => 'value',
'parameter2' => 'value',
'parameter3' => 'value'
);

Exemplo específico

Se quiser exibir postagens com a tag 'Erros do WordPress', você configuraria seu argumento de consulta assim:

$query = new WP_Query( array( 'tag' => 'WordPress Errors' ) );

Por que o argumento é essencial

  • Sem argumento, sem conteúdo : se você não incluir um argumento WP_Query, o WordPress não saberá quais postagens exibir. Sua consulta não buscará nenhum conteúdo do banco de dados.

3. Defina os parâmetros WP_query

Os parâmetros são algo que torna o WP_Query útil e poderoso. Com a variedade deles disponíveis, tornou-se fácil para qualquer pessoa filtrar as pesquisas no banco de dados.

Por exemplo, quando você deseja mostrar postagens específicas em seu site WordPress, você usa WP_Query e para ter certeza de obter a postagem certa, você pode definir parâmetros. Você pode ter outra pergunta em mente: Quais são os parâmetros?

Bem, os parâmetros são como instruções que informam ao WordPress que tipo de postagens obter do banco de dados.

Exemplos de parâmetros comuns

Aqui estão alguns parâmetros comuns que você pode usar:

  • cat : exibe postagens de categorias específicas.
  • autor : mostra postagens de um ou mais autores específicos.
  • post_status : mostra postagens em andamento, agendadas, publicadas ou excluídas.
  • orderby : classifica as postagens por autor, tipo de postagem, data, etc.
  • posts_per_page : define o número de postagens a serem exibidas.
  • tag : mostra postagens com tags específicas.
  • order : Classifica as postagens em ordem crescente ou decrescente.
  • post_type : define se serão mostradas postagens, páginas ou tipos de postagem personalizados.

Como usar parâmetros

Se quiser mostrar postagens de uma determinada categoria, você pode usar o parâmetro category_name . Aqui está um exemplo:

$query = new WP_Query( array( 'category_name' => 'WordPress' ) );

Isso mostrará todas as postagens na categoria “equipe” e quaisquer subcategorias.

Exemplo mais complexo

Neste exemplo, demonstramos como você pode utilizar vários valores em argumentos diferentes para criar uma consulta complexa e personalizada para buscar as postagens exatas que você deseja.

Recuperaremos postagens que estão em categorias específicas, possuem determinadas tags, são escritas por autores específicos e são classificadas por data em ordem decrescente.

$args = array(
'category__in' => array(5, 10), // Categories with IDs 5 and 10
'tag__in' => array('featured', 'popular'), // Posts tagged with 'featured' or 'popular'
'author__in' => array(1, 2), // Authors with IDs 1 and 2
'orderby' => 'date', // Order by date
'order' => 'DESC', // In descending order
'posts_per_page' => 10 // Limit to 10 posts
);

$query = new WP_Query($args);

// The Loop
if ($query->have_posts()) {
while ($query->have_posts()) {
$query->the_post();
// Display post content
the_title('<h2>', '</h2>');
the_excerpt();
}
} else {
// No posts found
echo 'No posts found';
}

// Restore original Post Data
wp_reset_postdata();

  • categoria__in : ajuda a especificar que queremos postagens de categorias com IDs 5 e 10.
  • tag__in : especifica que queremos postagens marcadas com 'destaque' ou 'popular'.
  • autor__in : especifica que queremos postagens de autores com IDs 1 e 2.
  • orderby : Especifica que queremos ordenar as postagens pela data em que foram publicadas.
  • order : Especifica que queremos as postagens em ordem decrescente (as mais recentes primeiro).
  • posts_per_page : Limita o número de postagens recuperadas a 10.

4. Modifique objetos com métodos e propriedades de classe

No WordPress, WP_Query é uma classe PHP especial usada para recuperar postagens do banco de dados. Pense nisso como uma ferramenta que ajuda você a obter exatamente as postagens que deseja exibir em seu site.

O que são propriedades e métodos de classe?

Em PHP, uma classe pode ter propriedades (como variáveis) e métodos (como funções). Aqui está uma maneira simples de entendê-los:

  • Propriedades : são como contêineres que contêm informações. No contexto de WP_Query , as propriedades podem incluir itens como a lista de postagens ou o número de postagens encontradas.
  • Métodos : são como ferramentas ou ações que você pode executar. Em WP_Query , os métodos podem ajudá-lo a verificar se há postagens, obter o título de uma postagem ou redefinir a consulta.

Você pode alterar as propriedades diretamente?

Não, você não pode alterar as propriedades diretamente, mesmo os desenvolvedores também desencorajam isso, mas você pode usar métodos alternativamente.

Os métodos são como ferramentas ou comandos oficiais que ajudam você a seguir o caminho certo. É exatamente isso que funciona como as funções, quando você faz certas alterações nos métodos de WP_Query, você também pode customizar os dados que são buscados.

Exemplo de uso de métodos em WP_Query

Neste exemplo, uma função reset_postdata() pode ser uma etapa crítica na escrita de sua WP_Query. Este método irá redefinir as propriedades de $current_post e $post.

<?php
// Create a new query with specific arguments
$the_query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 5,
'category_name' => 'news',
));
?>

<?php if ($the_query->have_posts()) : ?>
<!-- Display the posts -->
<?php while ($the_query->have_posts()) : $the_query->the_post(); ?>
<h2><?php the_title(); ?></h2>
<p><?php the_excerpt(); ?></p>
<?php endwhile; ?>
<!-- Reset the post data to avoid conflicts -->
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

Discriminação:
  • Criando uma consulta :
    • $the_query = new WP_Query($args); : cria um novo objeto WP_Query com os argumentos que você forneceu.
  • Verificando postagens :
    • if ($the_query->have_posts()) : verifica se há alguma postagem para mostrar com base na sua consulta.
  • Fazendo um loop pelas postagens :
    • while ($the_query->have_posts()) : $the_query->the_post(); : configura os dados da postagem para que você possa exibi-los.
  • Exibindo postagens :
    • the_title(); e the_excerpt(); : exibe o título e o trecho da postagem atual.
  • Redefinindo dados de postagem :
    • wp_reset_postdata(); : redefine os dados da postagem global para a postagem da consulta principal. Isso é importante para evitar bagunçar outras partes da sua página.

Métodos comuns que você pode usar

Aqui estão alguns métodos comuns em WP_Query que você pode usar para trabalhar com sua consulta:

  • get_posts :
    • O que faz : recupera uma lista de postagens.
    • Exemplo : código phpCopy $posts = get_posts(array('category' => 'news'));
  • have_posts :
    • O que faz : verifica se há alguma postagem para exibir.
    • Exemplo : phpCopy code if ($the_query->have_posts()) { // There are posts to show }
  • the_post :
    • O que faz : configura os dados da postagem atual.
    • Exemplo : phpCopy code $the_query->the_post();
  • fill_query_vars :
    • O que faz : completa os detalhes ausentes da consulta.
    • Exemplo : phpCopy code $the_query->fill_query_vars($args);

Ao fornecer ao WP_Query as informações corretas, você pode personalizá-lo para executar diferentes tarefas. Este método é uma forma flexível e segura de ajustar as propriedades da classe.


WP_Query Vs query_posts(): Qual é preferível?

Abaixo está uma tabela de comparação detalhada de WP_Query vs. query_posts() no WordPress, incluindo alguns dos pontos principais que podem ajudá-lo a entender por que WP_Query é geralmente preferido query_posts() :

Recurso WP_Query query_posts()
Propósito Crie consultas personalizadas para recuperar postagens do banco de dados. Modifique a consulta principal da página (não recomendado para uso geral).
Uso principal Ideal para criar novas consultas e exibir postagens de forma personalizada. Geralmente usado para alterar a consulta principal, mas não é recomendado.
Uso recomendado Sim, é a forma recomendada de buscar e exibir postagens. Não, é melhor evitar usar esta função dentro do Loop principal, plugins e temas.
Efeito na consulta principal Não afeta a consulta principal. Você pode executar consultas personalizadas sem alterar o Loop principal. Substitui completamente a consulta principal, o que pode causar conflitos ou resultados inesperados.
Redefinindo dados de postagem Use wp_reset_postdata() para restaurar a consulta original após executar uma consulta personalizada. Nenhuma função equivalente, o que significa que pode ser necessário restaurar manualmente os dados de postagem da consulta principal.
Lidando com múltiplas consultas Pode lidar com diversas consultas e foi projetado para cenários complexos. Lida com apenas uma consulta e altera a consulta principal, o que pode ser problemático para múltiplas consultas.
Impacto no desempenho Geralmente melhor para desempenho, pois não altera a consulta principal. Pode ser menos eficiente e causar problemas devido ao seu impacto na consulta principal.
Exemplos de consultas personalizadas $custom_query = new WP_Query(array('post_type' => 'post', 'posts_per_page' => 5)); query_posts(array('post_type' => 'post', 'posts_per_page' => 5));
Exemplo de redefinição de dados <?php wp_reset_postdata(); ?> Sem função de redefinição, uma redefinição manual será necessária se forem feitas alterações na consulta principal.
Fácil de usar Fácil de usar, com métodos e funções integrados para consultar postagens e páginas. Menos direto e pode causar problemas se não for usado com cuidado.
WP_Query versus query_posts()

WPOven Dedicated Hosting

Alguns exemplos de uso de WP_Query

Para entender melhor WP_Query e seu uso prático, confira alguns dos exemplos abaixo:

1. Mostre as últimas postagens publicadas esta semana

Se você tiver uma boa base de usuários ou uma quantidade razoável de tráfego na web, isso significa que seus visitantes gostam do seu conteúdo e gostariam de ler os artigos mais recentes publicados em seu site.

Ao projetar seu site, você pode apresentar postagens recentes em uma seção dedicada da página da web. Felizmente, com WP_Query, você pode encontrar facilmente postagens com base em parâmetros de data. Vamos ver como.

<?php
$arguments = array(
"date_query" => array(
array(
"year" => date( "Y" ),
"week" => date( "W" ),
)
)
);
$posts = new WP_Query($arguments);
?>

Neste exemplo, criamos uma WP_Query para encontrar postagens publicadas na semana atual. Usamos uma parte especial do WP_Query chamada date_query para especificar nossos critérios de pesquisa.

O principal objetivo da consulta foi encontrar postagens publicadas durante a semana atual. E para isso utilizamos o parâmetro date_query para buscar postagens com base em datas. É necessária uma série de argumentos relacionados à data.

Assim, ao personalizar o parâmetro date_query , você pode buscar e exibir postagens que foram publicadas recentemente. No entanto, você também pode especificar valores personalizados para tornar a consulta mais eficaz e destacar os artigos mais recentes escritos na semana anterior.


2. Mostre a última postagem em uma categoria específica

Os visitantes do seu site podem frequentemente procurar as informações mais recentes e, para aumentar o envolvimento e as visualizações de página, é uma boa prática sugerir mais algumas postagens relacionadas de que possam gostar.

Embora existam muitas maneiras de vincular postagens relacionadas no WordPress, WP_Query é uma das maneiras eficientes de fazer isso. Principalmente uma ótima forma para sites que sempre postam conteúdo atualizado.

Por exemplo, se alguém ler um artigo sobre erros do WordPress, WP_Query pode ajudar a mostrar outros artigos semelhantes e recentes.

Então, se você deseja buscar as postagens mais recentes em uma categoria específica, use este WP_query e faça pequenas edições que incluam as informações do seu site:

<?php

// Get the current post id.
$current_post_id = get_the_ID();

// Get the current post's category (first one if there's more than one).
$current_post_cats = get_the_category();
$current_post_first_cat_id = $current_post_cats[ 0 ]->term_id;

// Setup arguments.
$args = array(
// Get category's posts.
'cat' => $current_post_first_cat_id,
// Exclude current post.
'post__not_in' => array( $current_post_id )
);

// Instantiate new query instance.
$my_query = new WP_Query( $args );

?>


3. Mostre as postagens do mesmo autor e da mesma categoria

É altamente possível que, se o visitante gostar do seu conteúdo, ele goste da opinião do autor, do estilo de escrita e da percepção.

Para isso, você pode usar WP_Query para sugerir aos seus leitores postagens semelhantes escritas pelo mesmo autor. A consulta irá procurar as postagens escritas pelo mesmo autor para a mesma categoria da postagem atual.

Para isso, temos que criar uma string WP_Query específica, que procurará posts com autores semelhantes e da mesma categoria.

Aqui está o código:

<?php
$arguments = array(
"author_name" => "Rahul",
"category_name" => "WordPress",
"posts_per_page" => 3,
);
$posts = new WP_Query($arguments);
?>

No código acima, você precisa substituir “Rahul” pelo nome do autor e “WordPress” pelo nome da categoria.


4. Mostre suas postagens mais populares

Assim como as postagens mais recentes ou recentes que você exibiu para seus leitores. você também pode mostrar postagens sobre tópicos que seus leitores gostam e se envolvem muito. Para conseguir isso, você pode usar o parâmetro orderby e passá-lo para o argumento comment_count .

<?php
$arguments = array(
"category_name" => "WordPress Errors",
"orderby" => "comment_count",
"posts_per_page" => 5,
);
$posts = new WP_Query($arguments);
?>

O WP_Query acima procurará postagens na categoria “Erros do WordPress” e filtrará os resultados pelo número de comentários que cada postagem possui.

A saída exibirá cinco postagens com mais comentários, em ordem decrescente da esquerda para a direita, começando pela postagem com maior engajamento e terminando com a de menor engajamento.


Conclusão

Agora você testemunhou o quão poderoso é o WP_Query e como ele facilita a execução de solicitações de banco de dados no WordPress. Além disso, oferece flexibilidade para personalizar seu site e proporcionar uma experiência única aos visitantes.

Para usar WP_Query, você pode:

  • Crie um loop: exiba suas postagens.
  • Use argumentos de consulta: personalize suas pesquisas.
  • Defina parâmetros específicos: filtre seus resultados.
  • Modificar propriedades da classe: ajuste os resultados da consulta com métodos.

Se você dominar todas essas técnicas, poderá recomendar facilmente postagens específicas com base em vários fatores, como popularidade e data.

Essa técnica ajuda a aumentar o engajamento do usuário, aprimorar a experiência do usuário e também ajudar seus visitantes fiéis a encontrar conteúdo mais relevante.

Se você ainda tiver dúvidas sobre WP_Query ou quiser adicionar mais conteúdos que possamos ter perdido. Por favor, deixe-nos saber na seção de comentários abaixo.