Using esc_attr_e

时间:2015-04-25 作者:neilgee

据我所知esc_attr_e 理想情况下用于转义属性中的值-使用esc_attr_e 也可以与非属性值一起使用,例如下面示例中的h3和label元素?

<h3><?php esc_attr_e( \'Some Text\', \'my-plugin\' ); ?></h3>


<form name="myplugin_form" method="post" action="">

        <input type="hidden" name="myplugin_form_submitted" value="Y">

    <table class="form-table">
            <tr>
                <td><label for="ng_plugin_menu"><?php esc_attr_e( \'Plugin Menu Name\', \'my-plugin\' ); ?></label></td>
                <td><input name="ng_plugin_menu" id="ng_plugin_menu" type="text" value="<?php esc_attr_e ($my_plugin_label, \'my_plugin\'); ?>" class="regular-text" placeholder="<?php esc_attr_e (\'Placeholder Text\', \'my_plugin\'); ?>" /></td>
            </tr>

    </table>
    <p><input class="button-primary" type="submit" name="my_plugin_menu_submit" value="Save" /></p>

</form>
所以使用esc_attr_e 它代替了_e, 一位高级开发人员告诉我,这是有效的,但我正在等待确认。我的示例代码的另一个目的是允许对所有字符串进行翻译。

2 个回复
SO网友:Tom J Nowell

我建议使用esc_html 而不是esc_attr 为此,例如。

<a href="<?php echo esc_url( $url );?>" class="<?php echo esc_attr( $classes ); ?>">
    <?php echo esc_html( $title ); ?>
</a>
<div>
    <?php echo wp_kses_post( $html_with_safe_tags );?>
</div>
<script>
    <?php echo wp_json_encode( $data_for_js ); ?>
</script>
还有:

  • esc_html__ esc_attr__ etc(也转义翻译!)
  • esc_js - javascript的转义字符串,例如。console.log(<?php echo esc_js($var); ?>);
  • esc_url_raw 重定向时,请改用此选项esc_sql
  • esc_textarea
  • sanitize_text_field
  • 白名单值(int)absint
  • 和其他

SO网友:Filip Hanes

是的,它是有效的。作为参考https://developer.wordpress.org/reference/functions/esc_attr_e/此函数显示为在属性中安全使用而转义的翻译文本,对于属性安全的文本在html文本中肯定是安全的。

对于简单字符串(如“插件菜单名”),此函数返回相同的输出,但如果可以,我建议使用Tom J Nowell列出的适当函数。

结束

相关推荐

Disable escaping html

我在用SyntaxHighlighter Evolved 突出显示代码示例。E、 g。[csharp] string s = \"text\"; List<int> numbers = new List<int>(); [/csharp] 当我第一次保存它时,没关系,但编辑wordpress时,文本会更改为[csharp] string s = &quot;text&quot;; List&lt;int&am