从搜索结果中排除包含某些元数据的帖子

时间:2016-04-22 作者:Jasper

我正试图从搜索结果中排除所有带有特定元数据的帖子,但到目前为止,这还不起作用。下面是我使用的代码:

function ZoekGeenLegeItems( $query ) {
    if( is_admin() || !$query->is_search() || $query->get( \'post_type\' ) != \'item\' )
        return $query;

    $query->set(\'meta_query\', array(
      \'relation\' => \'OR\',
        array(
            \'key\' => \'KEY_itm_leeg\'
            ,\'value\' => \'0\'
        )
    ));
    return $query;
}
add_filter(\'pre_get_posts\',\'ZoekGeenLegeItems\');
有什么想法吗?

1 个回复
SO网友:Kuuak

首先pre_get_posts 挂钩是一个action 而不是过滤器。

然后meta_query 参数应包含relation only if 有多个内部meta\\u查询数组(codex).

最后,您不需要返回$query 参数,因为它是通过引用传递给回调函数的。

您的代码应如下所示:

function ZoekGeenLegeItems( $query ) {
    if( is_admin() || !$query->is_search() || $query->get( \'post_type\' ) != \'item\' )
        return;

    $query->set(\'meta_query\', array(
        array(
            \'key\'   => \'KEY_itm_leeg\',
            \'value\' => \'0\'
        )
    ) );
}
add_action(\'pre_get_posts\',\'ZoekGeenLegeItems\');

相关推荐

Search results for ACF data

是否可以编写查询以仅从一个自定义字段中搜索数据?我有一个名为“讲座”的CPT,我只想搜索名为“关键字”的自定义字段中的数据,我有:<?php $args = array( \'post_type\' => \'lectures\', \'order\' => \'ASC\', \'posts_per_page\' => -1, \'