我在“常规设置”页面中添加自定义字段。其中一个使用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\' )
);
}
当我尝试在主题中显示此字段的内容时,问题就出现了。HTML不起作用:
我使用以下方式显示它:
echo get_option( \'produktyseoopis\' );
SO网友:Jacob Peattie
因为你在使用esc_html
要清理设置,将转换所有<
,>
等转换为HTML实体,如>
, 渲染为<
但在HTML中没有被视为这些字符,这就是标记无法正确呈现的原因。esc_html
应该用于输出HTML,以便读者可以看到标记。
如果要清理HTML,请使用wp_kses_post
作为清理回调。
编辑:建议wp_kses_post
, 而不是wp_kses
, 根据汤姆的评论。