我正在努力使用wp_query,我需要你的帮助。
我有3个名为“Agenda_day”,“Agenda_month”,“Agenda_year”的自定义字段,代表活动的日期,月份和年份。
我希望按日,然后按月,然后按年顺序排序查询结果。
这是我的问题:
$query_agenda = new WP_Query(
array(
'posts_per_page' => 8,
'cat' => 4,
'meta_query' =>
array(
'relation' => 'AND',
'day' => array('key' => 'Agenda_day', 'compare' => 'EXISTS'),
'month' => array('key' => 'Agenda_month', 'compare' => 'EXISTS'),
'year' => array('key' => 'Agenda_year', 'compare' => 'EXISTS')
),
'orderby' => array('day' => 'ASC', 'month' => 'ASC', 'year' => 'ASC')
)
);
这不起作用......你能解释一下为什么并告诉我如何修复它吗?
谢谢!
编辑
这是执行的查询(返回结果但订单不合理)
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts LEFT JOIN wp_term_relationships ON(wp_posts.ID = wp_term_relationships.object_id)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)WHERE 1 = 1 AND(wp_term_relationships.term_taxonomy_id IN(4))AND(wp_postmeta.meta_key ='Agenda_jour'和mt1.meta_key ='Agenda_mois'和mt2。 meta_key = 'Agenda_annee')AND wp_posts.post_type = '后' AND(wp_posts.post_status = '发布' OR wp_posts.post_status = '私人')GROUP BY wp_posts.ID ORDER BY CAST(wp_postmeta.meta_value AS CHAR)ASC,CAST (mt1.meta_value AS CHAR)ASC,CAST(mt2.meta_value AS CHAR)ASC LIMIT 0,8
答案 0 :(得分:0)
https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Class_Reference/WP_Meta_Query
请检查上面的两个链接,你会得到你的答案和你通过它的错误的订单参数
答案 1 :(得分:0)
问题解决了!
我正在处理自定义字段中的不同格式:有些日期和月份是1个字符(“6”),有些是两个(“06”),因此系统无法对其进行排序< / p>
第二点是,因为我正在处理日期,所以我必须将“orderby”指令从“日,月,年”重新排序为“年,月,日”