函数文档

get_comment_author()

💡 云策文档标注

概述

get_comment_author() 函数用于获取当前评论的作者名称。如果评论的 comment_author 字段为空,则返回“Anonymous”或基于用户数据推断的作者名。

关键要点

  • 函数参数 $comment_id 可选,可以是整数、WP_Comment 对象或默认当前评论,用于指定要获取作者的评论。
  • 返回值为字符串,表示评论作者名称,通过 apply_filters('get_comment_author') 钩子可进行过滤。
  • 内部逻辑:优先使用 comment_author 字段;若为空,则尝试通过 user_id 获取用户显示名;否则返回“Anonymous”。
  • 相关函数包括 get_comment()、get_userdata() 和 __(),用于支持数据检索和本地化。

代码示例

function get_comment_author( $comment_id = 0 ) {
    $comment = get_comment( $comment_id );

    if ( ! empty( $comment->comment_ID ) ) {
        $comment_id = $comment->comment_ID;
    } elseif ( is_scalar( $comment_id ) ) {
        $comment_id = (string) $comment_id;
    } else {
        $comment_id = '0';
    }

    if ( empty( $comment->comment_author ) ) {
        $user = ! empty( $comment->user_id ) ? get_userdata( $comment->user_id ) : false;
        if ( $user ) {
            $comment_author = $user->display_name;
        } else {
            $comment_author = __( 'Anonymous' );
        }
    } else {
        $comment_author = $comment->comment_author;
    }

    return apply_filters( 'get_comment_author', $comment_author, $comment_id, $comment );
}

注意事项

  • 从版本 4.4.0 开始,$comment_id 参数支持 WP_Comment 对象,增强了灵活性。
  • 钩子 apply_filters('get_comment_author') 允许开发者自定义返回的作者名称,参数包括 $comment_author、$comment_id 和 $comment。
  • 函数被多个核心功能使用,如评论列表、RSS 馈送和评论模板,确保在修改时考虑兼容性。

📄 原文内容

Retrieves the author of the current comment.

Description

If the comment has an empty comment_author field, then ‘Anonymous’ person is assumed.

Parameters

$comment_idint|WP_Commentoptional
WP_Comment or the ID of the comment for which to retrieve the author.
Default current comment.

Return

string The comment author

Source

function get_comment_author( $comment_id = 0 ) {
	$comment = get_comment( $comment_id );

	if ( ! empty( $comment->comment_ID ) ) {
		$comment_id = $comment->comment_ID;
	} elseif ( is_scalar( $comment_id ) ) {
		$comment_id = (string) $comment_id;
	} else {
		$comment_id = '0';
	}

	if ( empty( $comment->comment_author ) ) {
		$user = ! empty( $comment->user_id ) ? get_userdata( $comment->user_id ) : false;
		if ( $user ) {
			$comment_author = $user->display_name;
		} else {
			$comment_author = __( 'Anonymous' );
		}
	} else {
		$comment_author = $comment->comment_author;
	}

	/**
	 * Filters the returned comment author name.
	 *
	 * @since 1.5.0
	 * @since 4.1.0 The `$comment_id` and `$comment` parameters were added.
	 *
	 * @param string     $comment_author The comment author's username.
	 * @param string     $comment_id     The comment ID as a numeric string.
	 * @param WP_Comment $comment        The comment object.
	 */
	return apply_filters( 'get_comment_author', $comment_author, $comment_id, $comment );
}

Hooks

apply_filters( ‘get_comment_author’, string $comment_author, string $comment_id, WP_Comment $comment )

Filters the returned comment author name.

Changelog

Version Description
4.4.0 Added the ability for $comment_id to also accept a WP_Comment object.
1.5.0 Introduced.