如何创建/modfiy WP_Query以在帖子标题或自定义域中进行搜索?

时间:2013-12-30 作者:ban-geoengineering

我需要修改或创建一个WP\\U查询,该查询将在帖子标题或自定义字段(称为“my\\u字段”)中搜索搜索词。

我已经阅读并尝试了几个小时,但我马上又回到了这段代码(下面),唉,它只在“my\\u字段”中搜索,不考虑post\\u标题。

function my_pre_get_posts_2( $query ) {
if ( is_admin() && $query->is_main_query() && $query->query[\'post_type\'] === \'post\' && isset($query->query[\'s\']) ) {

    $search_word = $query->query[\'s\'];

    $args = array(
        //\'s\' => $search_word, //If I include this line, the WP query seems to AND post_title and my_field. If I comment out this line, the WP query only searches in my_field
        \'post_type\' => \'post\',
        \'meta_query\' => array(
            \'relation\' => \'OR\',
            array(
                \'key\' => \'my_field\',
                \'value\' => $search_word,
                \'compare\' => \'IN\'
            ),
            array(
                \'key\' => \'post_title\',
                \'value\' => $search_word,
                \'compare\' => \'IN\',
            )
        )
    );

    //$query = new WP_Query( $args ); //Need to modify the existing WP_Query
    $query->init();
    $query->parse_query($args);
}

}
add_action( \'pre_get_posts\', \'my_pre_get_posts_2\' );
我之所以需要这样做,是因为我需要修改“所有帖子”(admin)页面中“搜索帖子”按钮的行为,以便管理员用户搜索的内容都将返回具有匹配帖子标题或my\\u字段值的帖子。

1 个回复
SO网友:ban-geoengineering

为了进行OR搜索,我尝试合并WP\\U查询结果,如下所示-Can i merge 2 new WP_Query($variable) 's? - 在guidod的回答中。但这并不是一个很好的解决方案,并导致了不稳定的行为。

我找到的正确解决方案是使用WP自定义查询修改查询,如以下代码所示(需要一些修改)——http://codex.wordpress.org/Custom_Queries ..

结束

相关推荐

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

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