排序依据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' => '>=',
),
)
)
);
?>
有人有想法吗?
我的问题的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变化,但谢谢你的尝试 –
你安装了任何插件订购职位? –
并且请告诉'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;
希望这有助于!
我看到了这个话题,并试过,我今天重试代码在线:http://lpb.cerealog.net/cote-image/cci-site-alternance/没有任何改变: /我真的不知道:( –
是什么date_de_fin'的'日期格式,如果不是在Y-M-d,然后检查这个答案。 http://*.com/a/41542520/5019802。 –
格式是YMD,我尝试你的代码和订单显示是相同的:/ –
你可以发布你的更新后的代码,还有'date_de_fin'的一些样本值。 –