Si queremos obtener una lista de post publicados en un determinado espacio de tiempo, por ejemplo en el último mes, WordPress lo pone extremadamente fácil, olvídate de lidiar con objetos DateTime, cambios de huso horario, tiempo UNIX o complejidades similares. El argumento date_query de WP_Query se ocupa de todo eso, tú tan sólo especifica el período de tiempo y listo.

El parámetro concreto a utilizar es after. Este parámetro del argumento date_query acepta cadenas compatibles con strtotime(). Por ejemplo, podemos poner -30 days, que sería la fecha y hora actual menos 30 días. Así que, si utilizamos 'after' => '-30 days' estamos diciendo “obtén todos los posts publicados después de hoy menos 30 días“, o lo que es lo mismo, los posts publicados dentro de los últimos 30 días (se puede sustituir 30 por el número de días que quieras):

$args = array(
    'date_query' => array(
        array(
            //Despues => ahora menos 30 días
            'after' => '-30 days'
        )
     )
);

$query = new WP_Query($args);

if( $query->have_posts() ) {
    ?>
    <h3>Los posts de los últimos 30 días</h3>
    <ul>
    <?php
    //El loop
    while( $query->have_posts() ) {
         $query->the_post();
         ?>
         <li><?php the_title(); ?></li>
         <?php
    }
    ?>
    </ul>
    <?php
}

wp_reset_postdata();

¿Qué no quieres los posts publicados sino modificados 30 días atrás? Especifica la columna de fecha a utilizar en el date_query (por defecto es post_date, el otro posible valor es post_modified para utilizar la fecha de moficación):

$args = array(
    'date_query' => array(
        array(
            //Compara con la fecha de modificación
            'column'  => 'post_modified',
            //Despues => ahora menos 30 días
            'after'   => '-30 days'
        )
    )
);

También podrías utilizar un número de semanas, meses, años, horas, una fecha concreta, … cualquier cadena compatible con strtotime(). Por ejemplo, los posts desde hace 1 mes, desde ayer a las 12:00h o desde una fecha concreta:


//Despues => ahora menos 1 month
'after'   => '-1 month'
//Despues => ayer a las 12
'after'   => 'yesterday 12:00'
//Despues => 28 de Noviembre de 2015
'after'   => 'November 18, 2015'

Sigue explorando los parámetros de fecha de WP_Query, son muy versátiles y fáciles de utilizar.

Nota: las fechas establecidas en date_query son transformadas internamente según la configuración horaria de WordPress utilizando la función current_time(). Por tanto, no es necesario preocuparse de la configuración horaria al utilizar date_query.