Problema con date_query que no devuelve algunas publicaciones en el rango de fechas

4 mar 2015, 20:45:09
Vistas: 18.1K
Votos: 6

Estoy obteniendo resultados muy extraños con el parámetro date_query de get_posts. Tengo una publicación para la cual:

date('Y-m-d H:i', get_post_time('U', false, $postid))

devuelve:

2014-04-03 10:42

Esta publicación se devuelve correctamente con get_posts usando estos argumentos:

$args = array(
    'post_type' => 'post',
    'cat' => 41,
    'fields' => 'ids'
);

Pero no con estos:

$args = array(
    'post_type' => 'post',
    'date_query' => array(
        'after' => '1980-01-01',
        'before' => '2100-01-01',
    ),
    'cat' => 41,
    'fields' => 'ids',
);

Otras publicaciones parecen devolverse correctamente. ¿Qué podría estar pasando? ¿Acaso date_query consulta algo diferente a get_post_time?

1
Comentarios

Extraño. ¿Obtienes la publicación correcta si consultas SOLAMENTE por date_query? ¿Has probado usando wp_query en lugar de get_posts (no debería haber diferencia, pero vale la pena verificarlo)?

vancoder vancoder
5 mar 2015 03:18:28
Todas las respuestas a la pregunta 1
0

Tu sintaxis es incorrecta para tu date_query. Debería ser un array de un array, no solo un array.

También sospecho que tu problema podría estar relacionado con PHP y no con WordPress.

Tu fecha before no es válida. PHP solo admite fechas entre el 13 de diciembre de 1901 y el 19 de enero de 2038, por lo que tus fechas deben estar entre esos dos rangos. Como referencia, consulta date

También querrás incluir el parámetro 'inclusive' y establecerlo en true para coincidencias exactas

Tu consulta debería ser algo como

$args = array(
'post_type' => 'post',
'date_query' => array(
    array(
        'after' => '1980-01-01',
        'before' => '2038-01-01',
        'inclusive' => true,
    ),
),
'cat' => 41,
'fields' => 'ids',
);
5 mar 2015 09:15:35