2017-02-17 128 views
0

我查看其他職位,但我什麼也沒找到,我在自3日:排序依據ACF自定義字段日期不工作

我希望在訂單展示3「EVENEMENTS」 ASC 但2018總是2017之前

$auj = date('Ymd'); 

$queryEvent = new WP_Query(
    array(
    'category_name' => 'evenements', 
    'posts_per_page' => 3, 
    'meta_key' => 'date_de_fin', 
    'orberby' => 'meta_key', 
    'order' => 'ASC', 
    'meta_query' => array(
     array(
      'key' => 'date_de_fin', 
      'value' => $auj, 
      'compare' => '>=', 
     ), 
    ) 
    ) 
); 

?> 

有人有想法嗎?

+0

是什麼date_de_fin'的'日期格式,如果不是在Y-M-d,然後檢查這個答案。 http://stackoverflow.com/a/41542520/5019802。 –

+0

格式是YMD,我嘗試你的代碼和訂單顯示是相同的:/ –

+0

你可以發佈你的更新後的代碼,還有'date_de_fin'的一些樣本值。 –

回答

0

我的問題的SQL查詢解析:

$queryEvent = $wpdb->get_results('SELECT * FROM cci_posts INNER JOIN cci_postmeta ON cci_posts.id = cci_postmeta.post_id INNER JOIN cci_term_relationships ON cci_posts.id = cci_term_relationships.object_id WHERE cci_term_relationships.term_taxonomy_id = 4 AND cci_postmeta.meta_key = "date_de_fin" AND cci_postmeta.meta_value > 20170221 AND cci_posts.post_status = "publish" ORDER BY cci_postmeta.meta_value ASC LIMIT 3', OBJECT); 
         //$queryEvent = new WP_Query($args); 
         ?> 
         <?php if ($queryEvent) : ?> 

         <?php /* Start the Loop */ ?> 
         <?php foreach ($queryEvent as $post) { 
          setup_postdata($post); ?> 
0

我已更新您的代碼。請嘗試更新後的查詢。

<?php $auj = date('Ymd'); 

$queryEvent = new WP_Query(
    array(
     'category_name' => 'evenements', 
     'posts_per_page' => 3, 
     'meta_key' => 'date_de_fin', 
     'orberby' => 'meta_value_num', 
     'order' => 'ASC', 
     'meta_query' => array(
      array(
       'key'  => 'date_de_fin', 
       'value' => $auj, 
       'compare' => '>=', 
       'type' => 'DATE' 
      ), 
     ) 
    )); 
?> 

我在meta_query取代 '的OrderBy' 值&加入 '類型' 參數。

希望,這可能對你有所幫助。

+0

捕獲您的代碼是在線,0變化,但謝謝你的嘗試 –

+0

你安裝了任何插件訂購職位? –

+0

並且請告訴'date_de_fin'自定義字段中的退貨或保存格式是什麼。 –

0

由於您的日期格式不Y-m-d所以你需要定義自己的 邏輯短路

function wh_posts_orderby($orderby, $query) { 
    //Only for custom orderby key 
    if ($query->get('orderby') != 'yyyymmdd_date_format') 
     return $orderby; 
    if (!($order = $query->get('order'))) 
     $order = 'ASC'; 
    global $wpdb; 
    $fieldName = $wpdb->postmeta . '.meta_value'; 
    return "STR_TO_DATE(" . $fieldName . ", '%Y%m%d') " . $order; 
} 

add_filter('posts_orderby', 'wh_posts_orderby', 10, 2); 

添加^^上面的代碼到您的活動主題functions.php文件。


現在,您可以按日期排序,您的文章(格式YYYYMMDD)

$auj = date('Ymd'); 
$args = [ 
    'category_name' => 'evenements', 
    'posts_per_page' => 3, 
    'meta_key' => 'date_de_fin', 
    'orberby' => 'yyyymmdd_date_format', //check this line 
    'order' => 'ASC', 
    'meta_query' => [ 
     'relation' => 'AND', //added this 
     [ 
      'key' => 'date_de_fin', 
      'value' => $auj, 
      'compare' => '>=', 
      'type' => 'DATE' 
     ], 
    ] 
]; 
$queryEvent = new WP_Query($args); 
if ($queryEvent->have_posts()) : 
    /* Start the Loop */ 
    while ($queryEvent->have_posts()) : $queryEvent->the_post(); 

    //you post 

    endwhile; 
endif; 

相關答案How do I query posts and use the 'orderby' attribute to order posts in loop according to date 'meta_value'?

希望這有助於!

+0

我看到了這個話題,並試過,我今天重試代碼在線:http://lpb.cerealog.net/cote-image/cci-site-alternance/沒有任何改變: /我真的不知道:( –