我正在使用Settings API 在自定义设置页面上:
<form action=\'options.php\' method=\'post\'>
<?php
settings_fields(\'myplugin_settingsPage\');
do_settings_sections(\'myplugin_settingsPage\' );
submit_button();
?>
</form>
这是一个非常简单的设置页面,有几个文本输入字段。问题是,一些字段的值包含双引号(例如,
Jhon "cracy" Garcia
), Wordpress似乎没有摆脱这个角色。数据库中存储的值似乎没有问题,我已经检查过了。但是,当您再次访问设置页面时,这是Wordpress生成的HTML:
<input name=\'myplugin_settingsPage[name]\' value="Jhon "cracy" Garcia" size=40>
正如您所看到的,引号没有进行URL编码,因此生成的HTML被破坏。我做错什么了吗?这是Wordpress中的一个bug吗?
最合适的回答,由SO网友:Francisco R 整理而成
我发现了问题。您需要使用esc_attr
, 像这样:
function my_setting_render() {
$options = get_option(\'my_option_name\');
?><input name=\'my_option_name[my_setting]\' value="<?php echo esc_attr($options[\'my_setting\']);?>">
<?php
}