排序依据ACF自定义字段日期不工作

排序依据ACF自定义字段日期不工作

问题描述:

我查看其他职位,但我什么也没找到,我在自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://*.com/a/41542520/5019802。 –

+0

格式是YMD,我尝试你的代码和订单显示是相同的:/ –

+0

你可以发布你的更新后的代码,还有'date_de_fin'的一些样本值。 –

我的问题的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); ?> 

我已更新您的代码。请尝试更新后的查询。

<?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'自定义字段中的退货或保存格式是什么。 –

由于您的日期格式不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/没有任何改变: /我真的不知道:( –