then”排序逻辑编写wordpress元查询

hjzp0vay  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(287)

总结
在我的wordpress构建中,我有一个由自定义事件帖子组成的日历。这些帖子有两种设置,单日事件和多日事件。这被设置为布尔值。我需要抓取这些帖子,并根据它们的日期进行排序。
问题
我面临的问题是,当我查询后端时,我不知道按哪个日期排序。我试过用布尔值来创建一种“if-then”逻辑,但没有成功。
故障排除
到目前为止我试过什么?
这是我一直想问的问题。不过运气不好

$events_query = new WP_Query (array(
    'post_type' => 'events',
    'posts_per_page' => '-1',
    'meta_query' => array (
        'relation' => 'AND',
        array (
            'key' => 'multiple_day_event',
            'value' => '1',
            'compare' => '=',
        ),
        array (
            'key' => 'start_date',
            'value' => date("Ymd"),
            'compare' => '>',
        ),
        'relation' => 'OR',
        array (
            'key' => 'multiple_day_event',
            'value' => '0',
            'compare' => '=',
        ),
        array (
            'key' => 'date',
            'value' => date("Ymd"),
            'compare' => '>',
        )
   )
));

我可以用一个日期而不是两个单独的日期吗?
不,据我所知不是。使用一个日期来代替这两个日期会在我的后端造成其他问题。
解决方案
简而言之,我需要一个能够使用 OR , AND , OR 逻辑。有什么想法吗?

beq87vna

beq87vna1#

根据 WP_Meta_Query 文件:
嵌套数组可用于构造复杂查询

$meta_query_args = array(
    'relation' => 'OR', // Optional, defaults to "AND"
    array(
        'key'     => '_my_custom_key',
        'value'   => 'Value I am looking for',
        'compare' => '='
    ),
    array(
        'relation' => 'AND',
        array(
            'key'     => '_my_custom_key_2',
            'value'   => 'Value I am looking for 2',
            'compare' => '='
        ),
        array(
            'key'     => '_my_custom_key_3',
            'value'   => 'Value I am looking for 3',
            'compare' => '='
        )
    )
);
$meta_query = new WP_Meta_Query( $meta_query_args );

你的例子是这样的:

$events_query = new WP_Query( array(
    'post_type' => 'events',
    'posts_per_page' => '-1',
    'meta_query' => array (
        'relation' => 'AND',
        array(
            'relation' => 'AND',
            array (
                'key' => 'multiple_day_event',
                'value' => '1',
                'compare' => '=',
            ),
            array (
                'key' => 'start_date',
                'value' => date("Ymd"),
                'compare' => '>',
            ),
        ),
        array(
            'relation' => 'OR',
            array (
                'key' => 'multiple_day_event',
                'value' => '0',
                'compare' => '=',
            ),
            array (
                'key' => 'date',
                'value' => date("Ymd"),
                'compare' => '>',
            )
        )
   )
) );

相关问题