Probleme cu date_query care nu returnează postări în intervalul de date

4 mar. 2015, 20:45:09
Vizualizări: 18.1K
Voturi: 6

Am observat rezultate foarte ciudate cu parametrul date_query al funcției get_posts. Am o postare pentru care:

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

returnează:

2014-04-03 10:42

Această postare este returnată corect cu următoarele argumente:

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

Dar nu cu acestea:

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

Alte postări par să fie returnate corect. Care ar putea fi problema? Oare date_query interoghează altceva decât get_post_time?

1
Comentarii

Ciudat. Obții postarea corectă dacă interoghezi DOAR pe baza date_query? Ai încercat wp_query în loc de get_posts (nu ar trebui să facă diferența, dar merită verificat)?

vancoder vancoder
5 mar. 2015 03:18:28
Toate răspunsurile la întrebare 1
0

Sintaxa ta este incorectă pentru date_query. Ar trebui să fie un array de array-uri, nu doar un array.

De asemenea, bănuiesc că problema ta ar putea fi legată de PHP și nu de WordPress.

Data ta before este invalidă. PHP acceptă doar date între 13 decembrie 1901 și 19 ianuarie 2038, așa că datele tale trebuie să fie între aceste două date. Pentru referință, vezi date

De asemenea, ai putea dori să incluzi parametrul 'inclusive' și să-l setezi la true pentru potriviri exacte

Interogarea ta ar trebui să arate cam așa:

$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