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 umtax_query
oumeta_query
. - Quando
'orderby' => 'meta_value'
é usado quando se passava a'meta_query'
com a relação deOR
emWP_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!