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 alterar o logotipo da página de login do WordPress

    Por padrão, em todo site em WordPress que desenvolvemos, a página de login presente em seusite.com.br/wp-login.php possui o logo oficial do WordPress. Entretanto, muitos demonstram a vontade de alterar esta logo para a logo de seu site. Há um modo de alterar este logo e é isto que veremos na dica de hoje.

  • Exibindo as últimas postagens de outro blog WordPress

    Para exibir as últimas postagens de outro site WordPress, você deve adicionar o código abaixo no local desejado. Você pode adicionar no sidebar.php para exibir em sua barra lateral. <?php include_once(ABSPATH.WPINC.’/rss.php’); $feed = fetch_rss(‘https://feeds.feedburner.com/tudoparawordpress’); $items = array_slice($feed->items, 0, 5); ?> <?php if (!empty($items)) : ?> <ul> <?php foreach ($items as $item) : ?> <li> <a…

  • Alterando sua senha de admin no WordPress via SQL

    Esqueceu sua senha de admin e precisa a alterar de uma maneira mais, digamos, radical ? Você pode usar este comando SQL para o alterar.. (pode ser via o phpmyadmin, por exemplo, ou console) UPDATE ‘wp_users’ SET ‘user_pass’ = MD5(‘nova_senha_aqui’) WHERE ‘wp_users’.’user_login’ = “login_do_admin”; Como você pode notar, apenas nova_senha_aqui e logins_do_admin devem ser alterados…

  • Jetpack: Editando o posicionamento dos botões de compartilhamento social

    Jetpack: Editando o posicionamento dos botões de compartilhamento social

    Utilizando o plugin Jetpack faz algum tempo, sempre me perguntei como os botões de compartilhamento social eram corretamente colocados após o conteúdo da postagem, e como eu poderia fazer um controle manual deste posicionamento para explorar isso melhor em cada tema. Aqui mesmo no TudoParaWP, os botões de compartilhamento são colocados antes e depois do…

  • Bloqueie Spammers de pegar os e-mails do seu WordPress

    Olá a todos. Depois de muito tempo volto para mostrar uma forma de bloquear que os spammers usem os emails do seu WordPress para uso de spam. Resolvi vir aqui depois de ler um Post no grupo do WordPress no Facebook, onde uma pessoas queria pegar os e-mails dos comentários de outros sites em WordPress….

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.