的要点esc_html
是为了确保最终结果是纯文本,没有HTML标记或脚本等,只有纯文本。这个__
部件通过本地化API,并且e
表示会echo
就其本身而言。所以你所看到的是预期的和正常的。
相反,您需要利用sprintf
, 您需要消除_e
零件和echo
您需要为链接使用占位符。
类似于此:
<p>
<?php
echo sprintf(
esc_html__( \'Apples can be red or green %s\', \'textdomain\' ),
\'<a href="/apples">\' . esc_html__( \'click here to learn about apples\', \'textdomain\' ) . \'</a>\'
);
?>
</p>
请记住,本地化字符串中的HTML标记并不好,它们表明您犯了错误或遗漏了什么。避免使用占位符或将其拆分为较短的字符串。
它们还可以指出复制/语法/搜索引擎优化/可访问性方面的问题。在这种情况下,仅突出显示“登录”一词表明,对于那些使用屏幕阅读器或自动机器人(如搜索引擎爬虫)的用户来说,访问性较差。这里,链接上写着;“登录”;但是链接文本不包含任何上下文,说明您为什么要这样做,或者链接指向何处,例如,不清楚它是否指向“我的帐户”页面,或者您是否可以通过该页面注册。