WordPress Meta_Query: tudo o que você precisa saber

Publicados: 2022-04-30

Uma das ferramentas mais poderosas do WordPress é a capacidade de adicionar campos personalizados às postagens. Muitos desenvolvedores usam campos personalizados avançados ou metacampos personalizados para postagens.

Nesta postagem, veremos como consultar postagens por campo personalizado usando a função meta_query no WordPress. Isso é útil para sites com muitas funcionalidades personalizadas.


Consultar postagens por um valor meta

Provavelmente, a maneira mais popular de consultar postagens com um campo personalizado é segmentar um meta valor específico. Por exemplo, digamos que temos um site onde as postagens têm um campo personalizado usado para determinar se uma postagem está “em destaque”. Isso é comum ao criar uma seção em destaque em um site WordPress.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'featured_post' ,
'value' => 'yes' ,
'compare' => '='
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value.php hosted with by GitHub

É claro que o código acima irá variar dependendo do título dos seus campos e meta-chaves, mas a 'chave' é o nome do campo personalizado, enquanto o 'valor' é o que estamos consultando nas postagens. O campo 'compare' é usado para uma série de operações de comparação que veremos mais adiante no post.

Usar isso em WP_Query nos permitirá obter um array que é ótimo para funções de loop para exibir postagens. Neste post, vamos apenas examinar as funções meta_query em vez de como exibir a saída WP_Query.


Postagens de consulta por vários valores meta

Se você quiser verificar um valor de meta-chave em relação a vários valores, é melhor usar o operador 'IN'.

<?php
$ meta_query_args = array (
'meta_query' => array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-query-post-meta-value-multiple.php hosted with by GitHub

Postagens de consulta por várias meta-chaves

Agora que consultamos postagens com uma única meta-chave, vamos fazer uma com vários campos/chaves sendo consultados. Isso permitirá que você consulte postagens com base em vários campos personalizados. Este exemplo combina as duas coisas que fizemos acima, aninhando as consultas em uma matriz e adicionando uma 'relação' à meta_query.

<?php
$ meta_query_args = array (
'meta_query' => array (
'relation' => 'AND' ,
array (
array (
'key' => 'city_name' ,
'value' => array ( 'New York City' , 'London' , 'San Francisco' ),
'compare' => 'IN'
),
array (
'key' => 'featured_post' ,
'value' => true ,
'compare' => '='
)
)
)
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-meta-query-multiple-keys.php hosted with by GitHub

O campo 'relation' pode ser definido como 'AND' ou 'OR' para que você possa exigir que todas as condições sejam atendidas ou apenas uma.


Operadores de comparação de meta consulta

Existem alguns operadores que serão úteis na consulta de suas postagens por meta consulta. Aqui está um rápido detalhamento de cada operador de comparação e como você pode usá-los.

  • '=' Consulta meta-chaves que equivalem a um meta valor
  • '!=' Consulta meta-chaves que NÃO são iguais a um meta valor
  • '>' Consulta as meta-chaves que são maiores que o valor meta
  • '>=' Consulta as meta-chaves que são maiores e iguais ao valor meta
  • '<' Consulta meta-chaves que são menores que o valor meta
  • '<=' Consulta meta-chaves que são menores e iguais ao valor meta
  • 'LIKE' Consulta as meta-chaves que contêm uma palavra/frase (por exemplo, consultar "red" corresponderia às frases "Red", "looksred" e "redstyle")
  • 'NÃO GOSTO' O oposto de acima
  • 'IN' Consulta meta-chaves onde o valor existe em uma matriz
  • 'NOT IN' Consulta meta-chaves onde o valor não existe em uma matriz
  • 'BETWEEN' Consulta meta-chaves onde o valor está entre dois números
  • 'NOT BETWEEN' Consulta meta-chaves onde o valor não está entre dois números
  • 'EXISTS' Consulta meta-chaves onde o valor existe
  • 'NOT EXISTS' Consulta meta-chaves onde o valor não existe
  • 'REGEXP' Consulta meta-chaves com base em uma expressão regular
  • 'NÃO REGEXP' Oposto do REGEXP acima

Como classificar postagens por metacampos

É claro que o WordPress permite que você classifique as postagens usando seus campos personalizados usando a opção 'orderby' no WP_Query. Você precisará definir 'orderby' como 'meta_value' e, em seguida, definir um valor 'meta_key' para o nome do seu campo. Por padrão, isso é mais útil quando deseja que sua consulta retorne em ordem alfabética ou classificada por número quando seu campo for um número.

<?php
$ meta_query_args = array (
'post_type' => 'page' ,
'order' => 'ASC' ,
'meta_key' => 'city_name' ,
'orderby' => 'meta_value'
);
$ meta_query = new WP_Query ( $ meta_query_args );
view raw wordpress-orderby-meta-query.php hosted with by GitHub