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

WP_Query Argumentos: Campos Personalizados

by
Difficulty:IntermediateLength:MediumLanguages:
This post is part of a series called Mastering WP_Query.
WP_Query Arguments: Taxonomies
WP_Query Arguments: Date

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

Se você estiver seguindo esta série, você vai ter uma compreensão de como WP_Query é estruturado e como usá-lo para escrever consultas personalizadas. Para ser capaz de definir o que WP_Query busca do banco de dados, você precisa saber quais argumentos você pode usar para consulta de dados.

WP_Query tem um grande número de argumentos possíveis, que o torna extremamente flexível. Como você pode usá-lo para consultar qualquer coisa realizada em sua tabela wp_posts, ele tem argumentos para cada permutação de consulta, que você pode querer executar em seu conteúdo.

Neste tutorial eu vou olhar os argumentos para os campos personalizados. Mas primeiro, uma rápida recapitulação de como codificar argumentos em WP_Query.

Recapitulando Como Argumentos Funcionam na WP_Query

Antes de começarmos, vamos dar uma rápida recapitulação como argumentos funcionam em WP_Query. Quando você codificar WP_Query em seus temas ou plugins, você precisará incluir quatro elementos principais:

  • os argumentos para a consulta, usando os parâmetros que serão abordados neste tutorial
  • a consulta em si
  • o loop
  • terminações: fechando o if e while tags e resetando os dados do post

Na prática isto terá uma aparência semelhante a seguinte:

Os argumentos são o que diz ao WordPress quais dados buscar do banco de dados que serão abordados aqui. Então o que estamos focalizando aqui é a primeira parte do código:

Como você pode ver, os argumentos estão contidos no array. Você vai aprender como codificá-los através deste tutorial.

Codificando Seus Argumentos

Há uma maneira específica para codificar os argumentos no array, que é a seguinte:

Você deve incluir os parâmetros e seus valores entre aspas simples, usar => entre eles e separe-os com uma vírgula. Se você errar o WordPress não adicionará todos seus argumentos para a consulta ou você receberá uma tela em branco.

Parâmetros de Campo Personalizado

Campos personalizados, também são conhecidos como metadados de post, usa uma classe separada chamada WP_Meta_Query. Isto significa que se você deseja executar uma consulta só para metadados de post, você pode usar WP_Meta_Query ou WP_Query (que acessa WP_Meta_Query), enquanto se você desejar consultar por metadados de post e outros itens tais como o tipo de post, você usa WP_Query.

A classe WP_Meta_Query é coberta em detalhes em outra parte desta série, então não vou entrar em detalhes sobre ela, mas a principal diferença entre o que uso do WP_Query é que WP_Query te permite criar alguns argumentos simples sem usar arrays aninhados.

Parâmetros Para Consultas de Campo Personalizado Simples 

Os parâmetros principais para usar WP_Query para a consulta de campos personalizados são as seguintes:

  • meta_key (string): Chave do campo personalizado (Custom field key).
  • meta_value (string): Valor do campo personalizado (Custom field value).
  • meta_value_num (number): Valor do campo personalizado (Custom field value).
  • meta_compare (string): Operador (Operator) para testar o 'meta_value'. Os valores possíveis são '=''!=''>''>=''<''<=','LIKE''NOT LIKE''IN''NOT IN''BETWEEN','NOT BETWEEN''NOT EXISTS''REGEXP''NOT REGEXP' ou 'RLIKE'. O valor padrão é '='.

Esses são os parâmetros para uma consulta simples de campo personalizado. Assim, por exemplo, a saída do post que têm um campo personalizado com a chave key1 (independentemente de seu valor), você deve usar este argumento:

Isso retornará todos os posts com um campo personalizado com a chave key1, seja qual for o valor.

Se você quiser especificar um valor, você adicionaria um argumento extra para isso:

Isso retornaria todos os posts com um campo personalizado com a chave key1 e o valor de value1 por isso.

Uma alternativa, você poderia buscar todos os posts com um campo personalizado com o valor value1, independentemente da chave (key). Isso pode ser útil onde você tem várias chaves de campo personalizado com valores duplicados:

Como você pode observar, você pode buscar por apenas chaves de campo personalizado ou por valor—Nem sempre ambos precisam ser especificados.

Usando o Argumento meta_compare

Você deve ter notado acima que há um monte de parâmetros possíveis para o argumento de meta_compare, e sua utilização nem sempre é aparente. Vamos dar uma olhada no que mais você pode usar:

  • =: É igual. Este é o padrão, então se você não incluir um argumento de meta_compare, isso é o valor usado em WP_Query.
  • !+: Diferente de.
  • >: Maior que.
  • >=: Maior ou igual a.
  • <: Menor que.
  • <=: Menor ou igual a.
  • LIKE (COMO): Isso irá ignorar dependendo do valor que você usar, e você também pode usá-lo com caracteres curinga para localizar os valores como o valor que você está procurando.
  • NOT LIKE (NÂO COMO): Funciona de forma semelhante ao LIKE (COMO), mas consulta o oposto!
  • IN (DENTRO): Use isto com um array no 'value' do argumento para encontrar posts com um ou mais dos valores no array.
  • BETWEEN (ENTRE): Use com um array de dois valores numéricos (especificado no argumento meta_value) para encontrar posts com um valor do campo personalizado entre esses valores (mas não igual a eles).
  • NOT BETWEEN (NÂO ENTRE):Consultas posts com valores de campo personalizado fora um array de dois valores numéricos, especificados pelo argumento meta_value.

Vamos dar uma olhada em alguns exemplos de uso desse argumento.

Primeiro, você pode excluir a chaves (keys) do campo personalizado ou valores (values) usando o argumento meta_compare. Então para buscar todas os posts, exceto aqueles com um campo personalizado com a chave key1, use isto:

Você também pode usar o 'NOT IN' (NÃO EM) valor para o argumento de meta_compare, que também pode ser usado com uma string de vários valores:

Isto seria consultar posts que não têm campos personalizados com valores key1 ou key2. Se você quiser ser mais específico, talvez consultando por posts com um campo personalizado e não outro, você usar um array aninhada, que abordado aos poucos.

Os exemplos acima usam valores não-numéricos. Você pode usar WP_Query com campos personalizados que têm valores numéricos, não só para buscar os posts com um campo personalizado com esse valor, mas também para buscar aqueles com campos personalizados com valores superiores ou inferiores. Você pode usar isso em uma loja por exemplo, procurando itens acima ou abaixo de um determinado preço.

Para localizar posts com um valor do campo personalizado acima de um determinado número, use algo como isto:

Isso iria retornar todos os posts com um campo personalizado com a chave de numkey e um valor de mais de 100. Se você quisesse consultar por valores de 100 ou mais, você usaria o 'meta_compare' => '>='

Você também pode encontrar posts cujos campos personalizados têm valores entre dois números que você queira especificar usando o argumento BETWEEN (ENTRE) um array:

Isto iria encontrar todas as mensagens com um valor no campo personalizado numkey entre 100 e 200.

Consultas Aninhados de Campo Personalizado

Se você quiser consultar mais de um campo personalizado, ou usar mais de um operador, você pode usar um array aninhado.

Ele terá a seguinte estrutura:

A maneira que você estrutura o argumento de 'meta_query' em WP_Query é exatamente o mesmo como a forma como você faz isso usando a classe WP_Meta_Query, que é coberta em um tutorial mais tarde nesta série, então eu não vou duplicar isso aqui.

Desde da versão 4.1 do WordPress você também pode usar vários níveis de array aninhados para criar consultas mais complexas e precisas. Parecem com o seguinte:

Isso permite você usar diferentes relações em diferentes níveis em sua consulta, por exemplo, consulta por posts com um valor em uma chave de campo personalizado, ou com ambos, dois valores em outra chave de campo personalizado. Isso é coberto em mais detalhe, com exemplos, no tutorial sobre a classe WP_Meta_Query, que faz parte desta série.

Resumo

Usando a classe WP_Query para consultar metadados de seus posts (ou campos personalizados) lhe dá muita flexibilidade, com vários argumentos potenciais combinados com um número de operadores para ajudá-lo a consultar seu banco de dados exatamente da maneira que você quer.

Se você só quer usar argumentos post metadados na sua consulta (e não combiná-lo com outros argumentos, por exemplo, para tipos de post), você também pode usar a classe WP_Meta_Query, que será coberta mais a frente na série.

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.