Consultar publicaciones publicadas después de una fecha determinada en WordPress

2 minutos de lectura

avatar de usuario
SparrwHalcón

Estoy tratando de escribir un WP_Query donde llamo solo las publicaciones que se publicaron después de marzo de 2012. Puedo llamar con éxito las publicaciones que son solo en marzo de 2012, pero que tienen dificultades para hacer ‘desde marzo de 2012 en adelante’.

    $current_year = date('2012');
    $current_month = date('>3'); // This doesn't work
    $current_month = date('3'); // This DOES work

    $custom_query = new WP_Query("year=$current_year&monthnum=$current_month&order=ASC&posts_per_page=-1");

¿Me estoy perdiendo algo simple o esto tiene que complicarse más?

Desde la versión 3.7 de WordPress, existe el argumento WP_Query date_query que funciona perfectamente para este tipo de consulta.

Como se puede ver en el Codexpuede especificar una consulta de fecha con el after argumento. los after puede ser una cadena compatible con strtotime() o una matriz de valores de ‘año’, ‘mes’, ‘día’.

Para su ejemplo, algo como lo siguiente debería funcionar:

$args = array(
    'posts_per_page' => -1,
    'date_query'     => array(
        'after' => array(
            'year'  => 2012,
            'month' => 3,
            'day'   => 1,
        ),
    ),
);
$custom_query = new WP_Query( $args );

O con una cadena strtotime():

$args = array(
    'posts_per_page' => -1,
    'date_query'     => array( 'after' => '2012-03-01' ),
);
$custom_query = new WP_Query( $args );

  • también puede incluir la fecha posterior a la consulta agregando 'inclusive' => true de lo contrario, solo se incluirán las publicaciones del segundo

    – Aarón

    21 de enero de 2021 a las 12:36


  • Utilizar el después date_query como dice alisspers con strtotime() funcionar así: strtotime('-3 day') o strtotime('-2 week') o strtotime('next Thursday') Lea sobre más opciones en los documentos de PHP: php.net/manual/es/function.strtotime.php

    –Jimmy Adaro

    11 mayo 2021 a las 20:53

avatar de usuario
ltiong_sh

La sección “Parámetros de tiempo” en http://codex.wordpress.org/Class_Reference/WP_Query tiene una nota sobre rangos de fechas. Usando la misma técnica:

$query_string = "order=ASC&posts_per_page=-1";

// Create a new filtering function that will add our where clause to the query
function filter_where( $where="" ) {
    $where .= " AND post_date >= '2012-03-01'";
    return $where;
}

add_filter( 'posts_where', 'filter_where' );
$custom_query = new WP_Query( $query_string );
remove_filter( 'posts_where', 'filter_where' );

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad