WordPress近期评论小工具不显示博主评论

Timle.CN网站侧边栏添加了Wordpress 自带近期评论widgets小工具,非常好的提升了本站与大家的互动。

但是在使用一段时间后发现,当我集中回复一些留言后,最新评论全都变成自己的回复内容,不美,不美!今天和大家分享怎么来改进近期评论widgets小工具的方法。

问题:

  • 作者(站长)自己的留言也会显示出来。
    当作者连续回复时,最新评论就都是作者自己的留言,这个模块就丧失了其应有的功能。
  • 所有留言的具体内容都不会显示出来。
    默认显示格式为:“读者ID”+“发表在”+“具体文章名”+“上的评论”.
    如显示为:Timle.CN发表在《WiFi钓鱼法追隔壁妹子》。

针对以上两个问题,可以通过插件解决(如WP-RecentComments)。按照我的习惯,不太复杂的改动尽量不使用插件,以免拖累网站运行速度。因此,本文将介绍如何通过修改代码来解决以上问题。

近期评论不显示作者评论

查看wordpress数据库中的wp_comments表,其中字段user_id即用于标识用户,user_id=0为来自访客的留言,因此只需在获取comments时传递user_id=0这个参数即可。

  1. WordPress4.4以前版本打开/wp-includes/default-widgets.php,
  2. 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类留言。

近期评论直接显示留言内容

  1. WordPress4.4以前版本打开/wp-includes/default-widgets.php,
  2. 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 ) )
**/

修改前后效果

如下:

1

以上。

PS:其实wodpress对user_id的判定很SB的,如果博主是在管理后台回复的,则user_id值为1;如果是在前台评论页回复的评论,则user_id值为0。所以,通过以上的修改后,想在侧栏近期评论显示博主评论,只需在前台回复评论即可。

未经允许不得转载:SEO培训-免费在线学习SEO课程 » WordPress近期评论小工具不显示博主评论

赞 (0)

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址