我正在努力与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')
)
);
这不起作用......你能解释一下为什么并告诉我如何解决它吗?
谢谢 !
EDIT
这是执行的查询(结果返回但没有很好的排序)
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')和wp_posts.post_type ='post'AND(wp_posts.post_status ='publish'或wp_posts.post_status ='private')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
2 回答
https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Class_Reference/WP_Meta_Query
请检查上面的两个链接,你会得到你的答案和你传递它的错误的orderby参数
问题解决了 !
我正在处理自定义字段中的不同格式:有些日期和月份是1个字符(“6”),有些是两个(“06”),因此系统无法对其进行排序
第二点是,因为我正在处理日期,我必须将“orderby”指令从“day,month,year”重新排序为“year,month,day”