Wp_Query中的Meta_Query未按预期工作

时间:2017-10-15 作者:egauvin

我正在尝试执行meta\\u查询,但没有得到预期的结果。在这种特殊情况下,所讨论的键是“\\u eventhidefromouncoming”(见下文),其值为“yes”(存储为字符串)。此外,如果该值不是“yes”,则根本不存在键“\\u EventHideFromCombing”。

我有以下疑问:

date_default_timezone_set(\'America/New_York\');
$now = date(\'Y-m-d H:i:s\');
$args = array(
    \'post_type\' => \'tribe_events\',
    \'posts_per_page\' => \'-1\',
    \'orderby\' => \'_EventStartDate\',
    \'order\' => \'ASC\',
    \'meta_query\' => array(
        \'relation\' => \'AND\',
        array(
            \'key\' => \'_EventEndDate\',
            \'value\' => $now,
            \'compare\' => \'>=\',
        ),
        array(
        \'relation\' => \'OR\',
            array(
                \'key\' => \'_EventHideFromUpcoming\',
                \'compare\' => \'NOT EXISTS\',
            ),
            array(
                \'key\' => \'_EventHideFromUpcoming\',
                \'value\' => \'yes\',
                \'compare\' => \'=\',
            ),
        ),
    ),
);
我已尝试将查询简化为只获取一个结果,将“\\u eventhidefromcoming”设置为“yes”,但仍然无法。我尝试过用不同的元键使用本质上相同的查询,并且效果很好。在我运行查询之前,似乎所有设置为“yes”的“\\u eventhidefromomcoming”都被过滤掉了。

1 个回复
最合适的回答,由SO网友:Paul G 整理而成

它不起作用,因为在事件插件中有一个自定义查询,它添加了在运行时要忽略(不返回)的帖子WP_Query. 看见getHideFromUpcomingEvents() 中的方法the-events-calendar/src/Tribe/Query.php. 但是有一个过滤器挂钩,你可以用它做任何事情。请参见以下示例代码:

function wpse283031_hide_ids( $ids )
{
    $ids = [];
    return $ids;
}
/* this filter should be added **before** you run WP_Query */
add_filter( \'tribe_events_hide_from_upcoming_ids\', \'wpse283031_hide_ids\' );
您可以尝试的另一件事是添加\'suppress_filters\' => true 到您的查询参数。如下所示:

$args = [
    ...
    \'suppress_filters\' => true
];

结束

相关推荐

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

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