Wordpress meta_query

时间:2018-04-16 10:45:10

标签: wordpress meta-key

我正在努力使用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

2 个答案:

答案 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”指令从“日,月,年”重新排序为“年,月,日”