Problema con date_query: alcuni post non vengono restituiti nell'intervallo di date

4 mar 2015, 20:45:09
Visualizzazioni: 18.1K
Voti: 6

Sto ottenendo risultati molto strani con il parametro date_query di get_posts. Ho un post per cui:

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

restituisce:

2014-04-03 10:42

Questo post viene restituito correttamente da get_posts con questi argomenti:

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

Ma non con questi:

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

Altri post sembrano essere restituiti correttamente. Cosa potrebbe succedere? date_query interroga qualcosa di diverso rispetto a get_post_time?

1
Commenti

Strano. Ottieni il post corretto se esegui la query SOLO con date_query? Hai provato wp_query invece di get_posts (non dovrebbe fare differenza ma vale la pena verificare)?

vancoder vancoder
5 mar 2015 03:18:28
Tutte le risposte alla domanda 1
0

La tua sintassi non è corretta per la tua date_query. Dovrebbe essere un array di un array, non solo un array.

Sospetto anche che il tuo problema possa essere correlato a PHP e non a WordPress.

La tua data before non è valida. PHP supporta solo date comprese tra il 13 dicembre 1901 e il 19 gennaio 2038, quindi le tue date devono essere comprese tra queste due. Per riferimento, consulta date

Dovresti anche includere il parametro 'inclusive' e impostarlo su true per corrispondenze esatte

La tua query dovrebbe essere qualcosa come

$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