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.
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. |