Incude comments in search

时间:2012-05-22 作者:Tara

是否有可以添加到函数中的代码片段。php等,将在搜索中包含注释(无插件)?

2 个回复
SO网友:EAMann

是否在主题的functions.php 或者在插件中,您仍在使用自定义代码。因此,我将忽略您的“无插件”要求,而是建议使用以下两个插件:

绝对有no reason 在中使用自定义功能的步骤functions.php 而不是插件。当您要求提供诸如全局搜索这样的高级/复杂功能时,这一要求将成为一个巨大的限制,并将阻止您找到所需的答案。

如果你仍然不想使用插件,你可能想把实际的搜索转移到另一个像谷歌这样的引擎上。在这种情况下video tutorial 集成自定义谷歌搜索可能会很有用。

SO网友:cfx

您可以将注释表加入到您的搜索中,这将允许您搜索注释内容,甚至可以搜索作者姓名(如果您愿意)。

将此添加到functions.php 要搜索评论内容和作者姓名,请执行以下操作:

function search_comments_join($join) {
    global $wpdb;

    if(is_search()) {
        $join .=\' LEFT JOIN \'.$wpdb->comments.\' ON \'.$wpdb->posts.\'.ID = \'.$wpdb->comments.\'.comment_post_ID \';
    }

    return $join;
}
add_filter(\'posts_join\', \'search_comments_join\');

function search_comments_where($where) {
    global $wpdb;

    if(is_search()) {
        $where = preg_replace(
            "/\\(\\s*".$wpdb->posts.".post_title\\s+LIKE\\s*(\\\'[^\\\']+\\\')\\s*\\)/",
            "(".$wpdb->posts.".post_title LIKE $1) OR (".$wpdb->comments.".comment_author LIKE $1) OR (".$wpdb->comments.".comment_content LIKE $1)",
            $where
        );
    }

    return $where;
}
add_filter(\'posts_where\', \'search_comments_where\');

function search_comments_distinct($where) {
    global $wpdb;

    if(is_search()) {
        return "DISTINCT";
    }

    return $where;
}
add_filter(\'posts_distinct\', \'search_comments_distinct\');
如果不想搜索评论作者姓名,只需删除OR (".$wpdb->comments.".comment_author LIKE $1)$where 作用

结束