函数文档

get_comment_author_email_link()

💡 云策文档标注

概述

get_comment_author_email_link() 函数用于生成当前评论作者的 HTML 电子邮件链接,默认通过 antispambot() 和 'comment_email' 过滤器对邮箱地址进行混淆处理,以增强安全性。

关键要点

  • 函数返回评论作者的 HTML 电子邮件链接,邮箱地址默认被混淆以防止被爬虫抓取。
  • 参数包括 $link_text(链接文本)、$before(链接前内容)、$after(链接后内容)和 $comment(评论 ID 或 WP_Comment 对象),均为可选。
  • 使用 'comment_email' 过滤器可自定义邮箱地址的显示方式,需注意保护用户隐私。
  • 函数内部调用 esc_url() 和 esc_html() 确保输出安全,避免 XSS 攻击。

代码示例

// 基本用法,生成默认混淆的邮箱链接
echo get_comment_author_email_link();

// 自定义链接文本和前后内容
echo get_comment_author_email_link('联系作者', '<div>', '</div>');

// 指定评论对象
$comment = get_comment(123);
echo get_comment_author_email_link('', '', '', $comment);

注意事项

使用时应确保邮箱地址不被恶意爬虫捕获,避免在网站上以原始形式显示,以保护评论者隐私。函数从 4.6.0 版本开始支持 $comment 参数。


📄 原文内容

Returns the HTML email link to the author of the current comment.

Description

Care should be taken to protect the email address and assure that email harvesters do not capture your commenter’s email address. Most assume that their email address will not appear in raw form on the site. Doing so will enable anyone, including those that people don’t want to get the email address and use it for their own means good and bad.

Parameters

$link_textstringoptional
Text to display instead of the comment author’s email address.
Default empty.
$beforestringoptional
Text or HTML to display before the email link. Default empty.
$afterstringoptional
Text or HTML to display after the email link. Default empty.
$commentint|WP_Commentoptional
Comment ID or WP_Comment object. Default is the current comment.

Default:null

Return

string HTML markup for the comment author email link. By default, the email address is obfuscated via the ‘comment_email’ filter with antispambot() .

Source

function get_comment_author_email_link( $link_text = '', $before = '', $after = '', $comment = null ) {
	$comment = get_comment( $comment );

	/**
	 * Filters the comment author's email for display.
	 *
	 * Care should be taken to protect the email address and assure that email
	 * harvesters do not capture your commenter's email address.
	 *
	 * @since 1.2.0
	 * @since 4.1.0 The `$comment` parameter was added.
	 *
	 * @param string     $comment_author_email The comment author's email address.
	 * @param WP_Comment $comment              The comment object.
	 */
	$comment_author_email = apply_filters( 'comment_email', $comment->comment_author_email, $comment );

	if ( ( ! empty( $comment_author_email ) ) && ( '@' !== $comment_author_email ) ) {
		$display = ( '' !== $link_text ) ? $link_text : $comment_author_email;

		$comment_author_email_link = $before . sprintf(
			'<a href="%1$s">%2$s</a>',
			esc_url( 'mailto:' . $comment_author_email ),
			esc_html( $display )
		) . $after;

		return $comment_author_email_link;
	} else {
		return '';
	}
}

Hooks

apply_filters( ‘comment_email’, string $comment_author_email, WP_Comment $comment )

Filters the comment author’s email for display.

Changelog

Version Description
4.6.0 Added the $comment parameter.
2.7.0 Introduced.