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

  • Como exibir o número total de comentários em seu blog WordPress?

    Se você tem um site e compartilha conteúdo relevante para pessoas de seu nicho, receber comentários é uma das melhores formas de medir a popularidade de seu site quanto a qualidade das matérias publicadas. Se o seu blog tem muitos comentários, pode ser dizer que o seu blogs é popular, pelo menos as pessoas gostam…

  • Como acelerar seu blog WordPress usando menos plugins?

    Como acelerar seu blog WordPress usando menos plugins?

    Muitos artigos e blogueiros apresentam matérias mostrando métodos atuais para fazer seu WordPress mais rápido, recomendar soluções eficientes como ter arquivos CSS e JavaScript otimizados e concatenados, como usar CSS sprites e cache. Seguindo essa dica, na verdade este conceito, você pode fazer o seu blog carregar até duas vezes mais rápido (ou mais), e…

  • Como encontrar o ID de suas páginas?

    Você precisa encontrar um ID de página ou post do WordPress, mas não sabe onde estão? Neste artigo você aprenderá um método fácil para visualizar IDs de páginas e postagens no painel do WordPress – sem usar plugins ou qualquer outro recurso adicional. O que são IDs de páginas e posts do WordPress? Cada conteúdo…

  • Adicionando categorias, tags e taxonomias customizadas nas Mídias do WordPress

    Você já se sentiu frustrado pelo fato do WordPress não permitir que você especifique uma categoria ou uma tag nas imagens ou arquivos de mídia? Pois é, eu já, pois tive tal necessidade em um projeto, e me coloquei a pesquisas como resolver isso. Imagine como isso poder ser útil: criar uma galeria dinâmica de…

  • Prós e contras de se utilizar um Tema WordPress Gratuito

    Como dito no artigo Temas Gratuitos X Temas Premium: Como escolher um tema WordPress?, nem sempre é fácil escolher um tema para ser utilizado. Neste artigo destacaremos os Prós e Contras de se utilizar um tema WordPress gratuitos. Prós Preço – Esses temas são livres e gratuitos. Liberdade – Você está livre para usar, construir…

  • Como inserir uma chamada em meu Feed Rss?

    Se você desejar inserir uma chamada ou anúncio para aparecer apenas no RSS, no final de cada post, insira o código abaixo em seu arquivo functions.php:   function insertFootNote($content) { if(!is_feed() && !is_home()) { $content.= “<h4>Gostou deste artigo?</h4>”; $content.= “<p>Inscreva-se em nosso <a href=’#’>feed RSS</a></p>”; } return $content; } add_filter (‘the_content’, ‘insertFootNote’); Tal técnica é…

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.