Portuguese (Português) translation by João Fagner (you can also view the original English article)
Bem-vindo à parte final dessa série — bem, tecnicamente a parte final será "Series Finale", mas você entedeu a idéia. Nesta parte, você vai aprender sobre duas classes irmãs chamadas WP_Meta_Query
e WP_Date_Query
.
Sem mais delongas, vamos começar!
Trabalhando com Todos os Tipos de Meta Dados Através da Classe WP_Meta_Query
A classe WP_Meta_Query
é uma classe "auxiliar", ajudando a classe WP_Query
fazer consultas com meta dados.
Como você sabe o WordPress armazena três tipos de meta dados no banco de dados: post meta (meta do post), user meta (meta do usuário) e comment meta (meta do comentário). Vimos nos tutoriais anteriores que podemos executar consultas de meta dentro das consultas que fazemos com as classes WP_Query
, WP_User_Query
e WP_Comment_Query
(com o parâmetro 'meta_query'
). O WP_Meta_Query
é atualmente executado quando você faz essas consultas.
Acontece que você pode obter as instruções para essas consultas de meta-relacionadas com a ajuda da classe WP_Meta_Query
. Esta classe não retorna realmente os resultados de determinada consulta, mas em vez disso, prepara os comandos SQL para serem usadas em outro lugar.
Exemplo de Utilização da Classe WP_Meta_Query
Não podemos dizer que é um tutorial se não fizermos um exemplo, não é mesmo? Com um exemplo simples, vamos ver como podemos usar a classe WP_Meta_Query
na vida real. (Conceder é uma coisa extremamente específica para obter o código SQL para uma consulta de meta-relacionada, mas vou tentar mostrar como se fosse um exemplo real.)
Vamos imaginar que você quer fazer algo especial "um plugin de posts relacionados" para seu próprio site, onde você irá listar posts que têm o mesmo valor de meta para uma chave de meta — ou outro valor de meta para uma outra chave de meta. E em vez de fazer uma consulta de meta dentro de uma instância da classe WP_Query
, você deseja obter o código SQL da consulta para usá-lo dinamicamente em blocos de código separado. Aqui estão os passos para preparar o código SQL:
1 |
<?php
|
2 |
|
3 |
global $wpdb; |
4 |
|
5 |
$my_meta_query_args = array( |
6 |
'relation' => 'OR', |
7 |
array( |
8 |
'meta_key' => 'Some_Key', |
9 |
'meta_value' => 'Some_Value', |
10 |
'compare' => '=' |
11 |
),
|
12 |
array( |
13 |
'meta_key' => 'Some_Other_Key', |
14 |
'meta_value' => 'Some_Other_Value', |
15 |
'compare' => '=' |
16 |
)
|
17 |
);
|
18 |
|
19 |
$my_meta_query = new WP_Meta_Query; |
20 |
|
21 |
$my_meta_query->parse_query_vars( $my_meta_query_args ); |
22 |
|
23 |
$my_meta_query_sql = $my_meta_query->get_sql( 'post', $wpdb->posts, 'ID' ); |
24 |
|
25 |
?>
|
Vamos lá: A variável $my_meta_sql
armazena o código SQL para sua consulta especial, você pode usar este código SQL em qualquer lugar em que você precisar dentro do seu projeto.
Criar Consultas de Data Com a Classe WP_Date_Query
Assim como WP_Meta_Query
a WP_Date_Query
é uma classe auxiliar para as classes WP_Query
, WP_User_Query
e WP_Comment_Query
. Essa classe auxiliar foi introduzido na versão 3.7 do WordPress. Naquela época a classe não oferecia suporte WP_User_Query
, mas desde a versão 4.1, você pode consultar dentro da tabela de usuários (na coluna de user_registered
especificamente).
Semelhante ao WP_Meta_Query
tem capacidade de consultar chaves de meta e valores, já a classe WP_Date_Query
permite consultar campos de data dentro das tabelas de posts, comentários e usuários. E exatamente como WP_Meta_Query
, essa classe auxiliar também permite que você retorne o código SQL preparado para executar uma consulta de data-relacionados.
Exemplo de Uso da Classe WP_Date_Query
A fim de compreender como funciona a classe WP_Date_Query
, vamos analisar um exemplo. Vai ser outro exemplo desnecessário e não específico, mas não me sentiria bem em deixar esta parte sem um exemplo.
Vamos imaginar que, por alguma razão, é preciso consultar os comentários que são feitos no mês atual e antes do meio-dia. (Por favor, deixe um comentário se você encontrar um bom exemplo para buscar comentários feitos no mês atual e antes do meio-dia!) Aqui está como fazer o código SQL para esta consulta bizarra:
1 |
<?php
|
2 |
|
3 |
$my_date_query_args = array( |
4 |
array( |
5 |
'month' => date( 'n' ), |
6 |
),
|
7 |
array( |
8 |
'before' => 'noon' |
9 |
),
|
10 |
'relation' => 'AND' |
11 |
);
|
12 |
|
13 |
$my_date_query = new WP_Date_Query( $my_date_query_args, 'comment_date' ); |
14 |
|
15 |
$my_date_query_sql = $my_date_query->get_sql(); |
16 |
|
17 |
?>
|
Vamos lá. Tenha em mente que você pode usar os formatos de data relativa do PHP, que são realmente úteis.
Dica rápida: Christian Bruckner tem um ótimo post sobre MarketPress.com sobre como funciona o WP_Date_Query.
Está um pouco desatualizado (porque foi escrito antes do lançamento do WordPress 4.1), mas é muito bem escrito e ainda é uma boa leitura. Certifique-se de dar uma olhada.
Embrulhando Tudo
Com essas duas classes auxiliares, vamos terminando essa longa jornada de dissecação da classe WP_Query
. Esta foi uma das mais longas séries de tutoriais na história do Tuts+, obrigado por estarem conosco até o fim! Na próxima (e última) parte, vamos recapitular o que passamos e finalizar a série.
Tem alguma coisa a acrescentar a este artigo? Se sim, não hesite em compartilhar os seus pensamentos na seção de comentários abaixo. E se você gostou do artigo, não se esqueça de compartilhar com seus amigos!
Seja o primeiro a saber sobre novas traduções–siga @tutsplus_pt no Twitter!