自定义常规设置(文本区字段)无法正确输出HTML

时间:2017-08-31 作者:Patryk Patryk

我在“常规设置”页面中添加自定义字段。其中一个使用Wordpress编辑器,我在那里插入HTML内容。我用简单的代码片段对其进行了阐述:

add_action( \'admin_init\', \'register_settings_wpse_57647\' );




function register_settings_wpse_57647() 
{
    register_setting( 
        \'general\', 
        \'opisproduktyseop\',
        \'esc_html\'
    );
    add_settings_section( 
        \'site-guide\', 
        \'Publishing Guidelines\', 
        \'__return_false\', 
        \'general\' 
    );
    add_settings_field( 
        \'opisproduktyseop\', 
        \'Enter custom message\', 
        \'print_text_editor_wpse_57647\', 
        \'general\', 
        \'site-guide\' 
    );
}  

function print_text_editor_wpse_57647() 
{
    $the_guides = html_entity_decode( get_option( \'opisproduktyseop\' ) );
    echo wp_editor( 
        $the_guides, 
        \'sitepublishingguidelines\', 
        array( \'textarea_name\' => \'opisproduktyseop\' ) 
    );
}

enter image description here

当我尝试在主题中显示此字段的内容时,问题就出现了。HTML不起作用:

enter image description here

我使用以下方式显示它:

echo get_option( \'produktyseoopis\' );

2 个回复
SO网友:Jacob Peattie

因为你在使用esc_html 要清理设置,将转换所有<,> 等转换为HTML实体,如&gt;, 渲染为< 但在HTML中没有被视为这些字符,这就是标记无法正确呈现的原因。esc_html 应该用于输出HTML,以便读者可以看到标记。

如果要清理HTML,请使用wp_kses_post 作为清理回调。

编辑:建议wp_kses_post, 而不是wp_kses, 根据汤姆的评论。

SO网友:Patryk Patryk

好啊我现在就解决了!当我显示它时,我将其与html\\u entity\\u decode()一起显示

echo html_entity_decode( get_option( \'produktyseoopis\' ) );

结束

相关推荐

从Options表中的数据创建阵列

大家好,我正试图从wordpress的选项表中的数据创建一个数组。我的数据都以相同的方式开始,然后是字段信息的名称。有没有办法提取所有这些数据并使用WordPress命令创建数组?或者,唯一的方法是使用适当的“SQL查询”,我想很多人都说在WordPress中不要这样做?