如何正确转义翻译后的字符串?

时间:2021-01-14 作者:LM28

我很难理解如何用WordPress转义翻译的字符串。。。

以下代码来自Wordpress codex:

function wpdocs_kantbtrue_init()
{
    $args = array(
        \'labels\' => array(
            \'name\'                  => _x( \'Recipes\', \'Post type general name\', \'recipe\' ),
            \'singular_name\'         => _x( \'Recipe\', \'Post type singular name\', \'recipe\' ),
            \'menu_name\'             => _x( \'Recipes\', \'Admin Menu text\', \'recipe\' ),
            \'name_admin_bar\'        => _x( \'Recipe\', \'Add New on Toolbar\', \'recipe\' ),
            \'add_new\'               => __( \'Add New\', \'recipe\' ),
            \'add_new_item\'          => __( \'Add New recipe\', \'recipe\' ),
            \'new_item\'              => __( \'New recipe\', \'recipe\' ),
            \'edit_item\'             => __( \'Edit recipe\', \'recipe\' ),

            ... 
        )
    );

    register_post_type(\'Recipe\', $args);
}
add_action(\'init\', \'wpdocs_kantbtrue_init\');
我想我在某个地方读到过,所有的东西都应该转义,我很确定,\\uuu()函数不会转义任何东西,它只是返回翻译后的文本。。。

我在某处也看到过:

$wp_customize->add_setting(\'address\', array(
    \'default\'           =>  esc_html__(\'Enter your Address in this field\', \'themename\'),
    \'sanitize_callback\' =>  \'sanitize_text_field\',
    \'transport\'         =>  \'postMessage\'
)); 
那么最安全的方法是什么呢?

1 个回复
最合适的回答,由SO网友:Tony Djukic 整理而成

WordPress有一种内置解决方案:

esc_html__( string $text, string $domain = \'default\' )

你可以用它来代替__()__x() 但第二种方法查找上下文翻译,您可以在其中指定要翻译的字符串的上下文。

它的抄本就在这里:https://developer.wordpress.org/reference/functions/esc_html__/

相关推荐

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