Nu reușesc să combin interogarea și sortarea în WordPress?
Mai jos este codul pe care îl folosesc pentru a interoga evenimentele care se întind pe mai multe zile. Problema pe care o am este că pot sorta fie după data de început (evstart_date) SAU pot face o interogare combinată împotriva datei de început și de sfârșit (evend_date). Dar nu pot face atât interogarea combinată, cât și sortarea. Codul de mai jos obține interogarea corectă (continuă să afișeze evenimentele pe mai multe zile care au început în trecut dar nu s-au încheiat încă), dar sortarea este defectă (revine la sortarea implicită după data postării).
Am încercat mai multe variații, dar nu am reușit să găsesc o soluție.
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$today = date('Y-m-d', strtotime('-6 hours'));
$upcomingevents = new WP_Query(array(
'post_type' => 'events',
'posts_per_page' => 6,
'paged' => $paged,
'meta_query'=>array(
'relation'=>'OR',
array(
'key' => 'evstart_date',
'value' => $today,
'compare' => '>=',
'type' => 'CHAR'
),
array(
'key' => 'evend_date',
'value' => $today,
'compare' => '>=',
'type' => 'CHAR'
)
),
'meta_key' => 'evstart_date',
'orderby' => 'meta_value',
'order' => 'ASC'
));
?>

Am avut aceeași problemă până când am realizat că nu trebuie să interoghezi după data de început a evenimentului, ci doar după data de sfârșit.
Atâta timp cât data de sfârșit a evenimentului nu a trecut, nu contează dacă data de început este în viitor sau nu. Tot ce trebuie să faci este să obții toate datele care nu s-au încheiat încă, apoi le poți ordona după data lor de început.
Aceasta ar trebui să funcționeze pentru tine:
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$today = date('Y-m-d', strtotime('-6 hours'));
$upcomingevents = new WP_Query(array(
'post_type' => 'events',
'posts_per_page' => 6,
'paged' => $paged,
'meta_query'=>array(
array(
'key' => 'evend_date', // Cheia meta pentru data de sfârșit
'value' => $today,
'compare' => '>=', // Compară dacă data de sfârșit este mai mare sau egală cu astăzi
'type' => 'CHAR'
)
),
'meta_key' => 'evstart_date', // Cheia meta pentru data de început
'orderby' => 'meta_value', // Ordonează după valoarea meta
'order' => 'ASC' // Ordine crescătoare
));
?>

Am ajuns în cele din urmă la aceeași concluzie, Christian; nu am apucat să o postez ca răspuns. Mulțumesc pentru răspunsul tău.
