Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. WordPress
Code

Dominando WP_Query: Introdução

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
Mastering WP_Query: Using the Loop

Portuguese (Português) translation by João Fagner (you can also view the original English article)

Por padrão, o WordPress executa uma consulta em cada página que será exibida, a natureza será determinada pelo tipo de página que está sendo visualizada. Então, se uma página estática está sendo visualizada, WordPress executa uma consulta para exibir a página Com o ID Relevante à pagina, enquanto que, se uma página de arquivo está sendo exibida, a consulta irá recuperar todas as mensagens nesse arquivo.

Mas às vezes você quer fazer as coisas um pouquinho diferente. Seja no conteúdo principal de sua página ou em outra parte (como na barra lateral ou rodapé), você pode querer exibir algum conteúdo específico que não é emitido pela consulta padrão.

A boa notícia é que WordPress faz com que isso seja possível com a classe WP_Query. Essa classe fornece um grande número de parâmetros que você pode usar para definir o conteúdo de saída (que não precisa ser limitados a mensagens) e te permiti escrever um loop que irá mostrar o conteúdo exatamente como você quer que seja exibido.

Nesta série de dez partes sobre Dominando o WP_Query, Baris Unver e eu iremos levá-los através dos prós e contras do WP_Query Assim que concluírem a série, você vai ser capaz de usá-la em uma variedade de cenários e afinar a forma como WordPress consulta os dados no banco de dados do seu site.

Nesta introdução eu vou cobrir os seguintes tópicos:

  • O que é WP_Query?
  • Por que usar WP_Query?
  • Problemas em potencial / com que me preocupar.

O que é WP_Query?

WP_Query é uma classe fornecida pelo WordPress. O fato de ser uma classe significa que você pode acessar rapidamente as variáveis, controles e funções que foram codificados dentro dessa classe do WordPress core, sem que você precise se preocupar em escrever todo esse código. Isso torna o código mais eficiente e confiável.

Se você quiser entender exatamente como funciona WP_Query por debaixo do capô, você pode ver no código includes/query.php

WP_Query consiste em quatro elementos principais:

  • os argumentos para a consulta, utilizando os parâmetros que serão abordados em detalhes nesta série
  • a consulta em si
  • o loop, que irá imprimir e exibir o conteúdo, títulos ou o que você desejar exibir
  • Terminações: fechando os if e while tags e resetando dados post

Na prática será parecido com o seguinte:

Você poderia definir seus argumentos ao escrever a consulta em si, mas eu prefiro definir eles primeiro, uma vez que mantém as coisas limpas.

Redefinindo Dados do Post

No exemplo acima, eu adicionei wp_reset_postdata() depois de cada consulta. Isto é importante porque redefine a consulta de volta para a consulta principal Sendo executado nessa página.

Por exemplo, se você estiver usando WP_Query para executar uma consulta na barra lateral, usando wp_reset_postdata() Isso diz ao WordPress efetivamente estamos ainda em qualquer página que está sendo visualizada e que ele deve trabalhar com a consulta padrão para essa página.

Se você não fazer isso, qualquer outra consulta que estiver executando na página (incluído a consulta padrão) pode quebrar e qualquer tag condicional de verificação de que tipo de página que está sendo visto não vai funcionar.

Por que usar WP_Query?

Se você não tiver usado a classe WP_Query antes, você pode estar se perguntando por que você deve começar. Aqui estou me concentrando em dois aspectos que são: porque suar WP_Query ao invés de outros métodos de consultas customizas e qual o senário em que poderá ser usado WP_Query.

Por que usar WP_Query ao inves outros métodos?

WP_Query não é o único método para criar uma consulta personalizada. Há mais quatro:

  • pre_get_posts
  • get_posts()
  • get_pages()
  • query_posts() (que você evitará, como eu irei explicar)

Eu não vou entrar em muitos detalhes sobre a forma como cada uma delas funcionam, mas é útil para saber quando eles são usados:

  • pre_get_posts é um gancho que modifica a consulta principal. Você pode usá-lo com uma tag condicional para verificar se um determinado tipo de página está sendo visto (por exemplo, a página inicial) e, em seguida, usá-lo para alterar a consulta que é executado (por exemplo, para remover os três posts recentes, se você estiver os exibindo em outro lugar na página). É uma maneira muito eficiente de modificar a consulta principal e deve ser sua primeira porta da chamada, se for isso que você queira fazer. No entanto, você não pode usá-lo para criar uma nova consulta.
  • get_posts() e get_pages() são muito semelhantes, com a principal diferença que esta nos seus nomes que é óbvia. Estas modelos de tags atualmente são usadas na class WP_Query, por isso eles são uma outra forma de fazer a mesma coisa, mas adicionam uma etapa extra porque eles chamam a class WP_Query ao invés de você fazê-lo diretamente. Você pode usar a consulta somente para posts ou págins, enquanto WP_Query é mais poderoso e te permiti consultar praticamente qualquer coisa no seu banco de dados.
  • query_posts() modifica a consulta principal, mas não deve ser usado em plugins ou temas. Isso é porque ele joga fora a consulta principal e começa tudo de novo, substituindo a consulta principal com uma nova consulta. Ele também é propenso a erros, especialmente com paginação, e é ineficiente e vai afetar seus tempos de carregamento da página. Se você precisar modificar a consulta principal, use pre_get_posts e se você quiser criar uma consulta completamente nova use WP_Query.

O diagrama abaixo, lançado pelo Andrey “Rarst” Savchenkounder Licença Creative Commons, faz algum sentido de esta:

Make Sense of WP_Query Functions

Quando você deve usar WP_Query

Há muitos cenários em que WP_Query será útil, e eu não posso cobri todos, mas aqui está um resumo:

  • Para adicionar uma lista de posts relacionados no âmbito do atual exemplo pós-para uma lista de todas as mensagens na mesma categoria.
  • Para criar dois loops na mesma página: por exemplo, uma página de FAQ com os títulos de interrogação no topo e conteúdo abaixo.
  • Para criar uma lista personalizada de posts recentes na barra lateral ou no rodapé do seu site, quando o Widget de Mensagens Recentes não fazer o que você precisa (ou você preferir criar o seu proprio caso). 
  • Para criar consultas personalizadas para taxonomias, usando mais de uma taxonomia para definir o que é exibido.
  • Para consultar tipos de post que não são exibidos em uma consulta padrão, tais como anexos.
  • Para criar páginas personalizadas com um número de consultas para diferentes tipos de conteúdo, como fiz neste exemplo local para um cliente.

Algumas Advertências

A classe WP_Query é bem legal. Eu criei um monte de sites que necessitam de consultas personalizadas eu uso com frequência. Mas isso não vem sem suas desvantagens. Aqui estão algumas coisas que você deve estar ciente:

  • Se tudo que você quer fazer é mudar a forma como as mensagens estão sendo exibidas para um determinado tipo de conteúdo ou arquivo, não use WP_Query. Em vez disso, basta criar um arquivo de modelo para esse tipo de conteúdo, e modificar o loop no arquivo de modelo.
  • Se você deseja exibir alguns posts que normalmente não seriam mostrados em uma página de arquivo (por exemplo, não mostrando uma categoria específica), não use WP_Query para criar uma consulta totalmente nova. Em vez disso use pre_get_posts para modificar a consulta principal, juntamente com uma tag condicional para destacar onde exatamente você quer fazê-lo.
  • Cuidado ao executar muitas consultas em uma página. Você pode teoricamente criar uma página com centenas de consultas personalizadas, mas basta pensar na sobrecarga do servidor. Se você precisar de mais de quatro ou cinco consultas em uma página, você pode querer considerar a criação de páginas extras.

Resumo

A classe WP_Query é uma ferramenta poderosa e extremamente útil para a criação de consultas personalizadas e pode fazer o seu site WordPress se comporta exatamente como você quizer. Como vimos, há momentos em que você usaria outros métodos para criar consultas personalizadas, mas esse metodo tem uma ampla variedade de utilizações.

No resto desta série, vamos levá-lo através dos detalhes de como usar WP_Query e absover o máximo dele.

Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.