WordPress自带的搜索默认情况下是不包含评论内容的,不过有些WordPress网站评论内容比较多,而且也比较有用,所以想要让用户在搜索时也能够同时搜索到评论内容,那么应该怎么做呢?
网络上很多教程都是推荐安装SearchWP插件,然后在设置中勾选“评论”,这样就可以搜索到文章评论内容了。
其实,我们只需要将以下代码添加到当前主题的functions.php文件中并保存更新文件即可实现WordPress搜索包含评论内容。
/**
* 纯代码如何实现WordPress搜索包含评论内容? - boke112百科
* https://boke112.com/article/wordpress-search-comment.html
*/
add_action('posts_search','wp_search_comment',2,2);
function wp_search_comment($search, $query){
global $wpdb;
if ($query->is_main_query() && !empty($query->query['s']) && !is_admin()) {
$sql = " OR EXISTS (SELECT comment_ID FROM {$wpdb->comments} WHERE comment_post_ID={$wpdb->posts}.ID and comment_content like %s)";
$like = '%' . $wpdb->esc_like($query->query['s']) . '%';
$search .= $wpdb->prepare($sql, $like);
}
return $search;
}
以上代码经过boke112百科在WordPress 6.53版本+PHP8.0测试了JianYue主题、Twenty Twenty-Four主题,都可以搜索到评论内容,包括自定义文章类型的评论内容。
不过如果你的WordPress网站根据『实现WordPress默认站内搜索伪静态化的方法』一文的操作,将WordPress站内搜索变成了伪静态,那么上述代码就失效了,也就是无法搜索到评论内容了。
来源:纯代码如何实现WordPress搜索包含评论内容? - boke112百科