内部带有html链接的PHP esc_html_e不起作用

时间:2021-12-28 作者:Bill

我正在尝试使用php esc\\u html\\u e和一个内部,一定是缺少了一些东西,因为我无法让它工作。我的代码很简单,是:

<p><?php esc_html_e(\'You are not logged in. <a href="/my-account/">Log in</a> or create an account to see questions and answers about this rental\', \'dc-woocommerce-multi-vendor\'); ?></p>
上述结果的输出为You are not logged in. <a href="/my-account/">Log in</a> or create an account to see questions and answers about this rental 在页面上。我在这里错过了什么?

1 个回复
SO网友:Tom J Nowell

的要点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标记并不好,它们表明您犯了错误或遗漏了什么。避免使用占位符或将其拆分为较短的字符串。

它们还可以指出复制/语法/搜索引擎优化/可访问性方面的问题。在这种情况下,仅突出显示“登录”一词表明,对于那些使用屏幕阅读器或自动机器人(如搜索引擎爬虫)的用户来说,访问性较差。这里,链接上写着;“登录”;但是链接文本不包含任何上下文,说明您为什么要这样做,或者链接指向何处,例如,不清楚它是否指向“我的帐户”页面,或者您是否可以通过该页面注册。

相关推荐

如何在视觉模式下仅通过键盘添加自定义的HTML标签?

假设我想插入不同的内联格式文本。我可以通过打开HTML模式来实现这一点,但是有没有办法直接在视觉模式下实现呢?例如,如果我键入span.a 在段落块中插入<span class="a"></span> 在HTML中,类似于粗体或斜体等格式按钮的工作方式。或者至少是一个热键按钮来应用自定义格式,如Ctrl+B. 这可能吗?或者将其提升到另一个层次,是否有办法实施Emmet 在WordPress中?