使用带有未按预期工作的关系的自定义META_QUERY

时间:2011-11-17 作者:Kristin

我正在尝试创建一个查询,以仅提取未来事件。在客户端请求添加日期范围之前,它一直工作得很好,因此事件要么只有开始日期,要么有开始日期和结束日期。我需要构建一个查询,以提取将来有开始日期或结束日期的事件。这无法按预期工作,并会拉取所有事件;尽管将orderby设置为meta\\u值,但提取的顺序似乎是随机的。任何帮助都将不胜感激!

    function get_upcoming_events($num) {
    $today =  gmdate(\'Y-m-d\', time()-28800);

    $args = array(
        \'meta_key\'          => \'event_date\',
        \'order\'             => \'ASC\',
        \'orderby\'           => \'meta_value\',
        \'post_status\'       => \'publish\',
        \'posts_per_page\'    => $num,
        \'post_type\'         => \'events\',
        \'meta_query\' => array(
            \'relation\'=>\'OR\',
            array(
                \'key\' => \'event_date\',
                \'type\' => \'DATE\',
                \'value\' => $today,
                \'compare\' => \'>=\' 
            ),
            array(
                \'key\' => \'end_date\',
                \'type\' => \'DATE\',
                \'value\' => $today,
                \'compare\' => \'>=\' 
            )
        )
    );

    if ( isset( $data[ \'taxonomy\' ]) ) {
        $args[ \'tax_query\' ] = array();
        $args[ \'tax_query\' ][0] = array(
            \'field\'     => \'slug\',
            \'taxonomy\'  => \'event-type\',
            \'terms\'     => \'general\'
        );
    }
    $myquery = new WP_Query( $args );
    return $myquery;
    }

1 个回复
SO网友:scribu

因为你设置了\'meta_key\' => \'event_date\'.

这相当于在“meta\\u query”中添加另一个子查询,即“获取所有具有event\\u date自定义字段、具有any值或日期为$today等的帖子”。

PS:有很多事件插件已经解决了所有这些问题。让他们试试,或者至少看看他们的代码。

结束

相关推荐

使用新的WP-Query()从循环中过滤后期格式;

嗨,我目前正在为我的博客构建一个主题。下面的代码指向最新的帖子(特色帖子)。因为这将有一个不同的风格比所有其他职位。然而我想过滤掉帖子格式:链接使用我在循环中定义的WP查询,因为它给我带来了更多的灵活性。我该怎么做呢? <?php $featured = new WP_Query(); $featured->query(\'showposts=1\'); ?> <?php while ($featured->have_post