Timle.CN网站侧边栏添加了Wordpress 自带近期评论widgets小工具,非常好的提升了本站与大家的互动。
但是在使用一段时间后发现,当我集中回复一些留言后,最新评论全都变成自己的回复内容,不美,不美!今天和大家分享怎么来改进近期评论widgets小工具的方法。
问题:
- 作者(站长)自己的留言也会显示出来。
当作者连续回复时,最新评论就都是作者自己的留言,这个模块就丧失了其应有的功能。 - 所有留言的具体内容都不会显示出来。
默认显示格式为:“读者ID”+“发表在”+“具体文章名”+“上的评论”.
如显示为:Timle.CN发表在《WiFi钓鱼法追隔壁妹子》。
针对以上两个问题,可以通过插件解决(如WP-RecentComments)。按照我的习惯,不太复杂的改动尽量不使用插件,以免拖累网站运行速度。因此,本文将介绍如何通过修改代码来解决以上问题。
近期评论不显示作者评论
查看wordpress数据库中的wp_comments表,其中字段user_id
即用于标识用户,user_id=0
为来自访客的留言,因此只需在获取comments
时传递user_id=0
这个参数即可。
- WordPress4.4以前版本打开/wp-includes/default-widgets.php,
- WordPress4.4之后版本打开/wp-includes/widgets/class-wp-widget-recent-comments.php,
搜索以下代码:
$comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish' ) ) );
修改为:
$comments = get_comments( apply_filters( 'widget_comments_args', array( 'number' => $number, 'status' => 'approve', 'post_status' => 'publish', 'type' => 'comment', 'user_id' => 0 ) ) );
解释一下:'user_id' => 0
效果为不显示站长自己的回复;'type' => 'comment'
效果为只显示评论类留言,即不显示pingback和trackback类留言。
近期评论直接显示留言内容
- WordPress4.4以前版本打开/wp-includes/default-widgets.php,
- WordPress4.4之后版本打开/wp-includes/widgets/class-wp-widget-recent-comments.php,
找到以下代码:
foreach ( (array) $comments as $comment) { $output .= '<li class="recentcomments">'; /* translators: comments widget: 1: comment author, 2: post link */ $output .= sprintf( _x( '%1$s on %2$s', 'widgets' ), '<span class="comment-author-link">' . get_comment_author_link() . '</span>', '<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . get_the_title($comment->comment_post_ID) . '</a>' ); $output .= '</li>'; }
1、把sprintf( _x( '%1$s on %2$s', 'widgets' )
里面的“on”改成冒号“:”。
2、将以下代码:
' . get_the_title($comment->comment_post_ID) . '
修改为
' . mb_strimwidth(strip_tags($comment->comment_content),0,50, '…') . '
这里的数字“50”是用来限制评论显示的字符数长度,可根据页面显示宽度自行修改。
修改后完整代码如下:
foreach ( (array) $comments as $comment) {
$output .= '<li class="recentcomments">';
/* translators: comments widget: 1: comment author, 2: post link */
$output .= sprintf( _x( '%1$s:%2$s', 'widgets' ),
'<span class="comment-author-link">' . get_comment_author_link() . '</span>',
'<a href="' . esc_url( get_comment_link( $comment->comment_ID ) ) . '">' . mb_strimwidth(strip_tags($comment->comment_content),0,50, '…') . '</a>'
);
$output .= '</li>';
}
/**
注意一下代码区别,自行调整
wordpress4.4之前版本esc_url( get_comment_link( $comment->comment_ID ) )
wordpress4.4之后版本esc_url( get_comment_link( $comment ) )
**/
修改前后效果
如下:
以上。
PS:其实wodpress对user_id的判定很SB的,如果博主是在管理后台回复的,则user_id值为1;如果是在前台评论页回复的评论,则user_id值为0。所以,通过以上的修改后,想在侧栏近期评论显示博主评论,只需在前台回复评论即可。
未经允许不得转载:SEO培训-免费在线学习SEO课程 » WordPress近期评论小工具不显示博主评论