首页 文章

Wordpress meta_query

提问于
浏览
0

我正在努力与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 回答

  • 0

    https://codex.wordpress.org/Class_Reference/WP_Query https://codex.wordpress.org/Class_Reference/WP_Meta_Query

    请检查上面的两个链接,你会得到你的答案和你传递它的错误的orderby参数

  • 0

    问题解决了 !

    • 我正在处理自定义字段中的不同格式:有些日期和月份是1个字符(“6”),有些是两个(“06”),因此系统无法对其进行排序

    • 第二点是,因为我正在处理日期,我必须将“orderby”指令从“day,month,year”重新排序为“year,month,day”

相关问题