wordpress advanced date queries

Entendendo o Date Query no WordPress 3.7

Muitas novidades interessantes foram divulgadas no lançamento do WordPress 3.7, e a que mais animou a comunidade de desenvolvimento foram as Date Query’s.

wordpress advanced date queries

Entendendo a Date Query

O Date Query surgiu como um patch sugerido por Alex Mills, um desenvolvedor conhecido como Viper007Bond que introduziu a capacidade de fazer consultas baseadas em data complexas para buscar  posts e comentários a partir do banco de dados do WordPress.

No passado, você podia selecionar mensagens que tinham um valor específico para o ano, mês, etc, mas não havia nenhuma maneira de fazer as coisas como a seleção de todas as mensagens antes (ou depois) de uma determinada data ou selecionando todas as mensagens entre duas datas diferentes. Com o Date Query, isso é facilmente possível!

// Buscando os 10 posts mais recentes no período de 9 da manhã e 5 da tarde em dias da semana
$some_posts = new WP_Query( array(
    'date_query' => array(
        array(
            'hour' => 9,
            'compare' => '>=',
        ),
        array(
            'hour' => 17,
            'compare' => '<=',
        ),
        array(
            'dayofweek' => array( 2, 6 ),
            'compare' => 'BETWEEN',
        ),
    ),
    'posts_per_page' => 10,
) );

// Pegando todos os posts feitos durante o verão americano
// de Primeiro de Junho e 31 de Agosto (inclusive)
// Note que a função strtotime() pode ser usada
$some_posts = new WP_Query( array(
    'date_query' => array(
        array(
            // String via strtotime()
            'after'     => 'June 1st, 2013',
            // Ou se você quiser um arreay
            'before'    => array(
                'year'  => 2013,
                'month' => 8,
                'day'   => 31,
            ),
            'inclusive' => true,
        ),
    ),
    'posts_per_page' => -1,
) );

// Qualquer post feito a um ano atrás, mas modificados no mês passado
$some_posts = new WP_Query( array(
    'date_query' => array(
        array(
            'column' => 'post_date_gmt',
            'before' => '1 year ago',
        ),
        array(
            'column' => 'post_modified_gmt',
            'after'  => '1 month ago',
        )
    ),
    'posts_per_page' => -1,
) );

Funciona para comentários também:

// Todos os comentários feitos no post de ID 123 que foram feitos na semana passada
$some_comments = get_comments( array(
    'post_ID' => 123,
    'date_query' => array(
        array(
            'after' => '1 week ago',
        ),
    ),
) );

As consultas de data avançadas devem permitir que os desenvolvedores fazerem algumas coisas interessantes como a exibição de cronogramas, arquivos personalizados, post por estação do ano e qualquer outra coisa que se possa imaginar, com intervalos de datas.

Parâmetros de Data do WordPress

  • year (int) – Ano com 4 dígitos (ex.: 2011).
  • monthnum (int) – Mês (de 1 a 12).
  • w (int) – Semana do ano (de 0 a 53). Usa o comando MySQL WEEK. O modo depende da opção “start_of_week”.
  • day (int) – Dia do mês (de 1 a 31).
  • hour (int) – Hora (de 0 a 23).
  • minute (int) – Minutos (de 0 a 60).
  • second (int) – Segundos (de 0 a 60).
  • m (int) – Ano e Mês (ex.: 201307).

Parâmetros de data aceitos no Date Query

  • date_query (array) – Parâmetros de data
    • year (int) – Ano com 4 dígitos (ex.: 2011).
    • month (int) – Mês no formato numérico (de 1 to 12).
    • w (int) – Semana do ano (de 0 a 53).
    • day (int) – Dia do mês (de 1 a 31).
    • hour (int) – Hora (de 0 a 23).
    • minute (int) – Minutos (de 0 a 60).
    • second (int) – Segundos (de 0 a 60).
    • after (string/array) – Dados ‘Antes’. Para os parâmetros, veja a  WP_Date_Query::build_mysql_datetime()’,
    • before (string/array) – Dados ‘Depois’. Para os parâmetros, veja a   WP_Date_Query::build_mysql_datetime()’,
    • inclusive (boolean) – Para after/before, para passar se o valor exato deve ser incluído ou não.
    • compare (string) – Veja a função WP_Date_Query::get_compare().
    • column (string) – Column para buscar a query. Padrão: ‘post_date’.
    • relation (string) – OR ou AND, como os sub-arrays devem ser comparados. Default: AND.

As consultas de data avançadas substituem métodos mais volumosos utilizados no passado, tais como a adição de um filtro para posts_where.

Posts Similares

  • Veja o novo design do Dashboard do WordPress

    Embora nada fique parado por muito tempo no WordPress, o design do painel do seu blog não mudou muito ultimamente. Enquanto foram adicionadas novas funcionalidades e feitos alguns ajustes ao longo do caminho, o dashboard tem esperado por uma atualização por algum tempo. Com isso em mente, há sete semanas, um grupo desconexo de web…

  • Gerencie os Downloads feitos em seu site WordPress

    Atendendo mais uma dúvida de visitantes do Tudo Para WordPress, faço esta rápida postagem à pedido do amigo @OckTock Duas alternativas para você gerenciar e monitorar quais downloads disponibilizados estão fazendo sucesso entre seus visitantes:

  • Como exibir o número de resultados na busca do WordPress

    Abra o arquivo search.php. Nele, procure pela seguinte linha: <h2 class=”pagetitle”>Resultado da busca</h2> E a substitua pela linha abaixo: <h2 class=”pagetitle”>Resultado da busca por <?php /* Search Count */ $allsearch = &new WP_Query(“s=$s&showposts=-1″); $key = wp_specialchars($s, 1); $count = $allsearch->post_count; _e(”); _e(‘<span class=”search-terms”>’); echo $key; _e(‘</span>’); _e(‘ — ‘); echo $count . ‘ ‘; _e(‘artigos’);…

  • Como customizar a mensagem Leia Mais, exibida pela tag more

    Como todos nós já sabemos, a tag <!–more–> funciona para quebrarmos a exibição de uma postagem na página inicial… tudo o que estiver acima dela será exibido, e em seu lugar teremos a exibição de uma mensagem padrão, como ‘Leia Mais’ , ‘Read More’, ‘Read This Article’, ou algo neste sentido. Na minha humilde concepção,…

  • Como solicitar imagem destacada como obrigatória?

    Muitos temas de WordPress, sobretudo páginas iniciais e de arquivos/categorias, são altamente dependentes de imagens destacadas para apresentarem uma interface atrativa. Se você tem um tema assim, ou desenvolveu para um cliente que é assim, então você não pode permitir que sua postagem ou a de seu cliente fiquem sem imagem destacada, ou com uma…

  • WordPress 3.0 – Dica para desenvolvedores

    Para desenvolvedores, as 3 seguintes constantes são importantes e devem ser colocadas em todo wp-config.php de um sistema de desenvolvimento. Por favor, use-a com precaução em um sistema já desenvolvido! Add define(‘WP_DEBUG’, true); // para permitir reports durante o desenvolvimento. Add define(‘WP_DEBUG_DISPLAY’, false); // para desabilitar a exibição de erros. Add define(‘WP_DEBUG_LOG’, true); // para…

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

2 Comentários

  1. Seu post me ajudou muito. As vezes coisas simples se tornam um pesadelo se a gente não tem o conhecimento adequado. Tava me batendo pra definir postagens dos últimos 7 dias, mas agora com esse date_query tudo fica mais fácil.