2017-05-26 3 views
0

Ich versuche, Daten von unten Abfrage zu bekommen. Ich will Ergebnis zwischen zwei Daten von ersten Schlüssel und anderen Schlüsselwert, wenn gleich 1 aber Abfrage gibt Wert für mich nur die heutigen Datumsangaben und in SQL hinzufügen OR Beziehung. Bitte helfen Sie mir, das Falsche herauszufinden und eine Korrektur zu bekommen.Wordpress mehrere Meta-Abfrage

Mein Code ist

$curent_date = date('Y-m-d'); 
$start_date = date('Y-m-d 00:00:01', strtotime($curent_date."- 4 day")); 
$end_date = date('Y-m-d 23:59:59', strtotime($curent_date."+ 4 day")); 
$events_query = new WP_Query(array(
    'post_type' => array('tribe_events'), 
    'post_status' => 'publish', 
    'meta_key' => '_EventStartDate', 
    'orderby' => 'meta_value', 
    'order'  => 'DESC', 
    'meta_query' => array( 
     'relation' => 'AND', 
     array(
     'key' => '_EventStartDate', 
     'value' => array($start_date, $end_date), 
     'compare' => 'BETWEEN' 
    ), 
    array(
     'key' => 'agenda', 
     'value' => 1, 
     'compare' => '=' 
    ), 
    ),)); 
print_r($events_query->request); 

print_r($events_query->posts); 

Return SQL ist

SELECT SQL_CALC_FOUND_ROWS DISTINCT wp_posts.*, MIN(wp_postmeta.meta_value) as EventStartDate, MIN(tribe_event_end_date.meta_value) as EventEndDate FROM wp_posts INNER JOIN wp_postmeta ON (wp_posts.ID = wp_postmeta.post_id) INNER JOIN wp_postmeta AS mt1 ON (wp_posts.ID = mt1.post_id) INNER JOIN wp_postmeta AS mt2 ON (wp_posts.ID = mt2.post_id) INNER JOIN wp_postmeta AS mt3 ON (wp_posts.ID = mt3.post_id) LEFT JOIN wp_postmeta as tribe_event_end_date ON (wp_posts.ID = tribe_event_end_date.post_id AND tribe_event_end_date.meta_key = '_EventEndDate') WHERE 1=1 AND ( 
    wp_postmeta.meta_key = '_EventStartDate' 
    AND 
    ( 
    mt1.meta_key = '_EventStartDate' 
    AND 
    (mt2.meta_key = '_EventStartDate' AND mt2.meta_value BETWEEN '2017-05-22 00:00:01' AND '2017-05-30 23:59:59') 
    AND 
    (mt3.meta_key = 'agenda' AND mt3.meta_value = '1') 
) 
) AND wp_posts.post_type = 'tribe_events' AND ((wp_posts.post_status = 'publish')) AND **(wp_postmeta.meta_value >= '2017-05-26 02:58:14' OR (wp_postmeta.meta_value <= '2017-05-26 02:58:14' AND tribe_event_end_date.meta_value >= '2017-05-26 02:58:14')) GROUP BY wp_posts.ID ORDER BY EventStartDate DESC, wp_postmeta.meta_value DESC LIMIT 0, 10 

Vielen Dank im Voraus.

Antwort

0

Vergleichen Sie datetime in wp_query, müssen Sie Ihre Meta-Abfrage Element des Datums in DATE Or DATETIME konvertieren.

$events_query = new WP_Query(array(
'post_type' => array('tribe_events'), 
'post_status' => 'publish', 
'meta_key' => '_EventStartDate', 
'orderby' => 'meta_value', 
'order'  => 'DESC', 
'meta_query' => array( 
    'relation' => 'AND', 
    array(
    'key' => '_EventStartDate', 
    'value' => array($start_date, $end_date), 
    'compare' => 'BETWEEN', 
    'type'=>'DATE' 
), 
array(
    'key' => 'agenda', 
    'value' => 1, 
    'compare' => '=' 
), 
),)); 

und wenn diese Arbeit nicht Sie

$events_query = new WP_Query(array(
'post_type' => array('tribe_events'), 
'post_status' => 'publish', 
'meta_key' => '_EventStartDate', 
'orderby' => 'meta_value', 
'order'  => 'DESC', 
'meta_query' => array( 
    'relation' => 'AND', 
    array(
      'key' => '_EventStartDate', 
      'value' => $start_date, 
      'compare' => '<=', 
      'type' => 'DATE' 
     ), 
array(
      'key' => '_EventEndDate', 
      'value' => $end_date, 
      'compare' => '>=', 
      'type' => 'DATE' 
     ) 
array(
    'key' => 'agenda', 
    'value' => 1, 
    'compare' => '=' 
), 
),)); 
+0

Nr diesem Code können versuchen, beide nicht arbeiten. Bitte schau auf meine sql und da ist das Hauptproblem. Fettdruck ist ein falsches Ergebnis. Nur das heutige Ergebnis. –

+0

Ihr Code in meinem Server http://downpublic.info/wpdemo/RS1991_ElseVillano/ –

+0

aber für mich fügen Sie diese ** ODER (wp_postmeta.meta_value <= '2017-05-26 05:30:23' UND tribe_event_end_date.meta_value > = '2017-05-26 05:30:23')) GROUP BY wp_posts.ID ORDER BY EreignisStartDate DESC, wp_postmeta.meta_value DESC LIMIT 0, 10 ** –

Verwandte Themen