WordPress强制调用用户昵称作为评论作者的名字

默认情况下,在 wordpress 评论中,对于登录用户发表的评论,会使用“公开显示为”(display_name)字段的值作为用户的显示名称。如果用户不能修改/或者没有修改这个“公开显示为”选项,就会显示用户的登录名(user_login)。
WordPress强制调用用户昵称作为评论作者的名字-云模板如果我们希望强制采用“昵称 nickname”作为评论作者的用户名称,该怎么办呢?下面我们将分析思路详细说一下,想直接用代码的就看最后的代码片段即可。

通过检查发现,评论作者的名字和链接部分是通过 get_comment_author_link()函数输出的,代码如下:

  1. function get_comment_author_link( $comment_ID = 0 ) {
  2.     $comment = get_comment( $comment_ID );
  3.     $url     = get_comment_author_url( $comment );
  4.     $author  = get_comment_author( $comment );
  5. 
    
  6.     if ( empty( $url ) || 'http://' == $url ) {
  7.         $return = $author;
  8.     } else {
  9.         $return = "<a href='$url' rel='external nofollow ugc' class='url'>$author</a>";
  10.     }
  11. 
    
  12.     /**
  13.      * Filters the comment author's link for display.
  14.      *
  15.      * @since 1.5.0
  16.      * @since 4.1.0 The `$author` and `$comment_ID` parameters were added.
  17.      *
  18.      * @param string $return     The HTML-formatted comment author link.
  19.      *                           Empty for an invalid URL.
  20.      * @param string $author     The comment author's username.
  21.      * @param int    $comment_ID The comment ID.
  22.      */
  23.     return apply_filters( 'get_comment_author_link', $return, $author, $comment->comment_ID );
  24. }

在代码的第 4 行,我们可以看到 $author = get_comment_author( $comment );来获取评论作者名称,接着看 get_comment_author() 函数的代码:

  1. function get_comment_author( $comment_ID = 0 ) {
  2.     $comment = get_comment( $comment_ID );
  3. 
    
  4.     if ( empty( $comment->comment_author ) ) {
  5.         $user = $comment->user_id ? get_userdata( $comment->user_id ) : false;
  6.         if ( $user ) {
  7.             $author = $user->display_name;
  8.         } else {
  9.             $author = __( 'Anonymous' );
  10.         }
  11.     } else {
  12.         $author = $comment->comment_author;
  13.     }
  14. 
    
  15.     /**
  16.      * Filters the returned comment author name.
  17.      *
  18.      * @since 1.5.0
  19.      * @since 4.1.0 The `$comment_ID` and `$comment` parameters were added.
  20.      *
  21.      * @param string     $author     The comment author's username.
  22.      * @param int        $comment_ID The comment ID.
  23.      * @param WP_Comment $comment    The comment object.
  24.      */
  25.     return apply_filters( 'get_comment_author', $author, $comment->comment_ID, $comment );
  26. }

在代码的第 7 行,可以看到调用的是 display_name (即“公开显示为”)然后底部有一个钩子:

  1. apply_filters( 'get_comment_author', $author, $comment->comment_ID, $comment );

我们下来要做的,就是通过钩子去修改为昵称。将下面的代码添加到主题的 functions.php 文件或你的插件文件中,就可以达到目的:

  1. /**
  2.  * 将评论作者名称显示为昵称
  3.  */
  4. function wpkj_get_comment_author_filter( $author, $comment_ID, $comment ){
  5. 
    
  6.     $user = $comment->user_id ? get_userdata( $comment->user_id ) : false;
  7.     if ( $user ) {
  8.         $author = $user->nickname;
  9.     } else {
  10.         $author = __( 'Anonymous' );
  11.     }
  12. 
    
  13.     return $author;
  14. }
  15. add_filter( 'get_comment_author', 'wpkj_get_comment_author_filter', 10, 3 );

当然了,如果用户没有设置过昵称,那还是会显示用户的登录名哦。

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/83341

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买