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

Dominando WP_Query: Funções Relacionadas

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

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

Ola, bem vindo a segunda parte da série chamada "Dominando WP_Query". Na primeira parte da série, simplesmente fiz uma introdução do que é a classe WP_Query. E nesta segunda parte, vamos aprender sobre as funções relacionadas com WP_Query.

Vamos Começar!

Aproveitando o poder da WP_Query Com Funções, Ações (Actions ) e Filtros (Filters)

Eu não sou um especialista em programação, mas eu posso ver que a classe WP_Query é um dos melhores exemplos do padrão MVC. É extremamente poderoso, totalmente extensível e muito fácil de usar uma vez que você só precisa saber o básico.

Além de suas propriedades, métodos e parâmetros (que nós iremos abordar no futuro), o WordPress oferece funções extras e ganchos (ou seja, ações e filtros) para trabalhar com a classe WP_Query. Neste tutorial, vamos conhecer as funções e na próxima parte, vamos ver ações e filtros relacionadas com WP_Query. Se eu esquecer alguma coisa, não hesite em me avisar fazendo um comentário.

Funções Relacionadas WP_Query

Há 13 funções no WordPress que trabalham com a classe WP_Query que podem ajudar você a aproveitar o poder da WP_Query. Elas não precisam de qualquer introdução, então vamos lá:

Obtendo Variáveis de Consulta Pública: get_query_var()

Nosso primeiro nome da função fala por si, realmente: Leva o objeto global $wp_query e recupera uma variável de consulta pública a partir dele. Ele tem dois parâmetros: O primeiro é a variável para retornar o seu valor e o segundo é um valor padrão para retornar se a variável não estiver definida:

Modificando o Loop Principal: query_posts()

Para ser honesto, esta é uma função ruim. Você realmente não tem que usá-la em tudo, mas por uma questão de mostrar "o caminho certo", nós vamos passar por isso para dizer que é "o caminho errado".

query_posts() é uma função que altera a consulta principal, colocando a consulta principal de lado e executando uma nova consulta e você precisará usar wp_reset_query() para limpar a função.

Esta função é uma das funções mais mal utilizadas no núcleo do WordPress. Você não deve usá-lo para criar consultas secundárias—você pode usar a classe WP_Query ou a função get_posts() (que falaremos mais adiante neste tutorial). Você não deve usá-la para alterar a consulta principal—você deve usar a ação pre_get_posts (que falaremos mais tarde também). Mesmo o Codex desencoraja a usá-la e sugeri alternativas.

Resumindo: Não a utilize.

Obtendo um Single Post: get_post()

Outra função auto-explicativa é get_post(), que você utiliza para obter um único post. Ele tem três parâmetros opcionais:

  • O primeiro é o ID do post (ou a identificação do post atual por padrão).
  • O segundo é o tipo de resultado que você vai ter: OBJECTARRAY_A (um array associativo) ou ARRAY_N (um array numérico).
  • A terceira é a escolha de filtrar o resultado. Por padrão é bruto 'raw' por isso não vai ser filtrado, a menos que você configure 'edit', 'display', 'attribute' ou 'js'.

Salvando Consultas no Arrays: get_posts()

A função get_posts() permite executar uma consulta e guardá-la como array para usar em vários lugares. Ela exige os mesmos argumentos com WP_Query assim você pode personalizar a consulta como desejar. (Nós vamos começar a rever os parâmetros de WP_Query no futuro, portanto, fique atento!) É a melhor e mais eficiente forma de criar listas de posts—mas não loops.

Embora esta função possa ser usada para executar "consultas secundárias" sem nenhum problema, o Codex recomenda o uso WP_Query ao criar múltiplos loops e usando get_posts() para obter uma lista post. Peter R. Knight explica a diferença entre get_posts() e WP_Query em termos mais simples: A principal diferença é que WP_Query faz mais consultas no banco de dados (post data, meta data, author data e comment data) enquanto get_posts() faz apenas uma consulta (post data).

Obtendo Páginas: get_pages()

Esta função tem a finalidade de buscar uma lista de páginas, embora tenha um parâmetro post_type que também pode possibilitar que você selecione outro tipo post (desde que o tipo de post seja hierárquico, caso contrário ele retorna false).

Ela aceita argumentos que são muito semelhantes aos argumentos de WP_Query, com algumas diferenças:

  • sort_order: Classifica as páginas de forma ascendente (asc) ou descendente (desc).
  • sort_column: Como ordenar as páginas. Aceita post_titlemenu_orderpost_date,post_modifiedIDpost_author, and post_name.
  • hierarchical: A lista páginas hierarquicamente (1) ou não (0).
  • exclude: Uma lista separada por vírgulas ou um array de IDs de página para serem excluídas da lista.
  • include: Uma lista separada por vírgulas ou um array de IDs de página para incluídos na listagem e excluir todo o resto.
  • meta_key: Quando usado com o argumento meta_value, só inclui as páginas que foram definidas as meta key e value.
  • meta_value: Quando usado com o argumento meta_key, só inclui as páginas que foram definidos a meta key e o value.
  • authors: Uma lista separada por vírgulas dos IDs do autor
  • child_of: Um ID de uma página para buscar apenas os seus filhos (child) e netos (grandchildren ) na listagem.
  • parent: Liste as páginas que têm ID da página fornecido como pai (parent). Para que esse argumento funcionar, o argumento hierarchical deve ser definido como 0.
  • exclude_tree: Uma lista separada por vírgulas ou um array de IDs de páginas para excluir com os seus filhos (children).
  • number: Número de páginas para retornar.
  • offset: Número de páginas para saltar do topo.
  • post_type: O tipo de post para consultar. Naturalmente, o padrão é page.
  • post_status: Uma lista separada por vírgula de tipos de status de post para incluir.

Verificando se a Consulta Retorna Posts: have_posts()

Sem aceitar quaisquer parâmetros, esta função simplesmente retorna TRUE se a consulta retorna todos os registros e FALSE se não.

Trabalhando o Loop: the_post()

O Codex diz que é isto "Interação com índice do post no Loop". Ele faz várias coisas:

  1. Ele retorna o próximo registro a partir da consulta.
  2. Ele configura o $post data.
  3. Ele define o in_the_loop parâmetro para TRUE.

Configurando $postsetup_postdata()

Esta função também fala por si: Ela configura os dados globais do post. Vamos ver o que o Codex diz sobre ela:

setup_postdata() carrega as variáveis globais $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages, que ajudam as Tags de Template a trabalhar no contexto atual do post. Ele não atribui a variável global $post, mas espera que seu argumento é uma referência a ele.

Limpando o Loop Atual: rewind_posts()

Ainda outra função cujo nome afirma a sua funcionalidade: Esta função simplesmente "reseta" o Loop para que você possa executá-lo novamente.

Resetando $postwp_reset_postdata()

Essa função reseta a variável global $post de volta para o primeiro post da consulta principal. É melhor usar isto após uma consulta secundária.

Resetando a Consulta: wp_reset_query()

Deve ser usado se a consulta principal é alterada (com o query_posts() function ou pre_get_posts ação (action) que vamos ver na próxima parte) para que a consulta principal possa ser resetada.

Verificando Se a Consulta Atual é a Consulta Principal: is_main_query()

Esta é um Tag Condicional que retorna TRUE se a consulta atual é a consulta principal e FALSE se não for. Simples, não é mesmo?

Verificando se estamos no Loop: in_the_loop()

Outra Tag Condicional in_the_loop() que simplesmente retorna TRUE ou FALSE se o seu código está sendo executado dentro do Loop ou não.

Fim da Parte II

Lá vai você—agora você sabe (provavelmente) todas as funções relacionadas com WP_Query! Fique atento para a próxima parte onde vamos aprender sobre ações (actions ) e filtros (filters) WP_Query relacionados.

Você tem algum comentário ou alguma coisa a acrescentar? Sinta-se livre para compartilhar seus pensamentos comentando abaixo. E se você gostou do artigo, não se esqueça de compartilhá-lo com seus amigos!

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

Advertisement
Advertisement
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.