
WordPress 的翻译函数 __() 默认会转义 HTML,但通过 sprintf() 结合未转义的 HTML 字符串(需确保内容可信),可将消息中的纯文本(如“contact us”)替换为可点击的超链接。
wordpress 的翻译函数 `__()` 默认会转义 html,但通过 `sprintf()` 结合未转义的 html 字符串(需确保内容可信),可将消息中的纯文本(如“contact us”)替换为可点击的超链接。
在 WordPress 插件或主题开发中,常需动态修改系统提示消息(例如 WooCommerce 订单校验失败时的提示)。默认情况下,__() 函数仅返回纯文本,直接在翻译字符串中写 标签会被原样输出或被过滤,无法渲染为有效链接。正确做法是分离可翻译文本与 HTML 结构,利用 sprintf() 动态插入已构造好的 HTML 片段。
以下是推荐实现方式:
public function change_message( $message ) {
// 1. 翻译链接锚文本(支持多语言)
$contact_us = __( 'contact us', 'your-text-domain' );
// 2. 构建安全链接(URL 应使用 esc_url() 防御 XSS)
$link = '<a href="'%20.%20esc_url(%20'https://yoursite.com/contact'%20)%20.%20'" target="_blank" rel="noopener">' . esc_html( $contact_us ) . '</a>';
// 3. 定义带占位符的翻译字符串(%s 将被链接替换)
$format = __( 'Your order is too heavy. Please %s to get individual shipping cost.', 'your-text-domain' );
// 4. 组合并返回最终消息
return sprintf( $format, $link );
}
✅ 关键要点说明:
中文 Word 文档自动化校对工具。当用户需要对中文文本或 Word 文档进行标点符号检查、语法检查、错别字检查时使用此 skill。触发词:语法检查、错别字、标点符号、校对、检查文档。
- 必须指定文本域(text domain):如 'your-text-domain',确保翻译能被 .pot 文件正确提取;
- 务必转义 URL 和 HTML 内容:esc_url() 防止恶意 URL,esc_html() 防止锚文本注入脚本;
- 添加 target="_blank" 和 rel="noopener":提升安全性与用户体验(新窗口打开);
- 避免直接拼接未过滤的用户输入:若链接地址来自数据库或表单,需额外验证与清理;
- 不建议使用 __() 包裹含 HTML 的整句:会导致翻译工具误判、HTML 被转义,且违反 WordPress 国际化最佳实践。
⚠️ 注意:该方法适用于你完全控制消息内容的场景(如自有插件)。若消息来源不可信(如用户提交内容),应改用更严格的白名单过滤方案,或改用按钮式交互(如通过 JavaScript 动态注入按钮元素)以规避服务端 HTML 渲染风险。










