Advertisement
  1. Code
  2. WordPress

Consultas Melhoradas das Últimas Versões do WordPress

Scroll to top
Read Time: 5 min
This post is part of a series called Mastering WP_Query.
Mastering WP_Meta_Query & WP_Date_Query
Mastering WP_Query: Series Finale

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

No ano passado, foi escrito muito sobre as melhorias de interface do usuário no WordPress: a mais citada delas foi a mudança na experiência de escrita que foi aperfeissoada.

Mas se você for um desenvolvedor você não vai querer saber sobre isso, vai procurar saber mais sobre o que mudou dentro do capô. Vou demonstrar uma das mudanças mais interessantes para os desenvolvedores: melhorias em certos tipos de consultas.

As principais alterações são as seguintes:

  • Foi adicionado suporte para consultas aninhadas, para consultas de metadados do post, datas, taxonomia e termos.
  • Parâmetros extras foram adicionados para consultar comentários.
  • Assim como alguns bugs foram corrigidos também!

Vamos dar uma olhada nas mudanças.

Consultas Aninhadas

Nas versões anteriores do WordPress, você poderia usar a instrução AND ou OR para definir consultas por termos de taxonomia, datas e metadados. Assim, por exemplo, os argumentos a seguir serão usados em uma consulta em um site de receita que gera receitas rápidas de lanches:

1
<?php
2
3
$args = array(
4
    'post_type' => 'post',
5
    'tax_query' => array(
6
        'relation' => 'AND',
7
        array(
8
            'taxonomy' => 'speed',
9
            'field' => 'slug',
10
            'terms' => array( 'quick' )
11
        ),
12
        array(
13
            'taxonomy' => 'meal',
14
            'field' => 'slug',
15
            'terms' => array( 'breakfast' )
16
        )
17
    )
18
);
19
20
$query = new WP_Query( $args );
21
22
?>

Isto procura pela taxonomia 'speed' e 'meal' e exibe posts com os termos 'quick' ('rápidos') e 'breakfast' ('café da manhã'), respectivamente.

Mas se você quisesse escrever uma consulta mais complexa? Digamos que você queria receitas rápidas para o café da manhã e receitas lentas para o almoço (talvez para alguém que queira tomar o café da manhã feito rápido, assim sobraria mais tempo para cozinhar o almoço!). Você não quer usar uma simples declaração AND para juntar todos os elementos de sua consulta, então você vai pegar as receitas que são lentas para o café da manhã e almoço, por exemplo. E você não deseja usar uma instrução OR ligando todos os termos, como você vai ter todos os tipos de receitas que só têm um dos termos consultados junto com outros que você deseja filtrar.

A boa notícia é que agora você pode fazer isso. Para consulta receitas rápidas para o café da manhã e receitas lentas para o almoço, você deve fazer o seguinte:

1
<?php
2
3
$query = new WP_Query(
4
    array(
5
        'tax_query' => array(
6
            'relation' => 'OR',
7
            array(
8
                'relation' => 'AND',
9
                array(
10
                    'taxonomy' => 'meal',
11
                    'field' => 'slug',
12
                    'terms' => array( 'breakfast' )
13
                ),
14
                array(
15
                    'taxonomy' => 'speed',
16
                    'field' => 'slug',
17
                    'terms' => array( 'quick' )
18
                )
19
            ),
20
            array(
21
                'relation' => 'AND',
22
                array(
23
                    'taxonomy' => 'meal',
24
                    'field' => 'slug',
25
                    'terms' => array( 'lunch' )
26
                ),
27
                array(
28
                    'taxonomy' => 'speed',
29
                    'field' => 'slug',
30
                    'terms' => array( 'slow' )
31
32
                )
33
            )
34
        )
35
    )
36
);
37
38
$query = new WP_Query( $args );
39
40
?>

Aqui eu usei dois arrays aninhados:

  • O array externo usa OR, porque estamos procurando posts que são ambos, receitas de café da manhã rápidas ou receitas do almoço lentas de preparar.
  • O primeiro array aninhada procura por posts que são receitas rápidas de cafe da manhã , usando AND porque você quer o post tenha ambos os termos.
  • O segundo array aninhada procura receitas lentas de almoço, novamente usando AND.

Claro, você pode variar suas consultas para incluir vários termos de taxonomia e valores sendo tão complexo como o que você precisa.

Aplicando Consultas Aninhadas: Termos de Taxonomia, Metadados e Datas

O exemplo que dei acima usa termos de taxonomia, mas esse recurso também foi adicionado para consultas de data e metadados. Os Metadados são onde as coisas podem ficar interessantes, como você tem a possibilidade de muitos valores.

A sintaxe funciona exatamente da mesma forma para consultas de data e metadados. Para consultas de meta você substitua tax_query com meta_query e usa a 'key' e 'value' como parâmetros. Para consultas de data você substitua tax_query com date_query e usa os parâmetros de data fornecidos no WordPress Codex.

Parâmetros de Comentário

Observações da consulta, você usa a classe WP_Comment_Query no lugar da classe WP_Query mais comumente usada. Essa classe tem oito novos parâmetros acrescentados:

  • 'author__in': identificar o autor do comentário (ou um array de autores)
  • 'author__not_in': identificar comentários não por um determinado autor (ou array de autores)
  • 'post_author__in': identificar o autor (ou array de autores) do post o do comentário que foi feito em
  • 'post_author__not_in': excluir comentários feitos em posts escritos por determinado autor ou array de autores
  • 'comment__in': comentários com um determinado ID ou array de IDs
  • 'comment__not_in': excluir comentários com um determinado ID ou array de IDs
  • 'post__in': comentários feitos em um post ou array de posts  (utilizando o ID do post)
  • 'post__not_in': excluir comentários feitos em um post ou array de posts (utilizando o ID do post)

Os valores usados para estes são o ID do autor, ID do comentário ou ID do post.

Observe que a classe de WP_Comment_Query agora suporta consulta aninhada.

Correções de Bugs

Também há um par de correções de erros que você talvez ache útil:

  • Foi corrigido um bug que causava falha de consultas quando a date_query  é usado junto com um tax_query ou meta_query.
  • Quando 'orderby' => 'meta_value' é usado quando se passava a 'meta_query' com a relação de OR em WP_Query, isso costumava quebrar a consulta. Isso foi corrigido.

Se quiser mais informações sobre todos os detalhes, você pode encontrá-las no site core do WordPress.

Resumo

Estas melhorias de consultas do WordPress é um passo a frente para ter conhecimento total do CMS. A capacidade de usar consultas aninhadas significa que você pode criar saídas de conteúdo de maneiras mais flexíveis e complexas. Será interessante ver como as pessoas irão usá-los!

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

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
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.