在那里我以为我很了解Wordpress。现在看来update_option()会自动转义代码。如果我想在选项中保存一些Javascript或HTML代码,则此行为会导致代码无法使用。
我拒绝对返回的值执行str_replace以过滤掉每个反斜杠。必须有更好的方法。
这是用于输入一些代码的文本框的PHP:
$option = unserialize(get_option('option'));
<textarea name="option[box]"><?php echo $option['box']; ?></textarea>
这是在提交表格(实质上)后发生的事情:
update_option('option', serialize($_POST));
有什么想法吗?
编辑:我现在通过使用PHP的stripslashes()来完成工作,其中脚本必须被渲染,而htmlentities(stripslashes())在文本框中显示存储的代码。虽然这样做,但我仍然想知道是否有更好的解决方案。
答案 0 :(得分:2)
现在看来update_option()会自动转义代码。
它只清理数据库条目的值。你会发现真正的麻烦制造者在wp-settings.php
的第750行和WP函数add_magic_quotes()
附近。
是的,你读得对,添加魔术引号!
出于某种原因,WordPress决定强制使用魔术引号,因此在编写插件等时,你总是需要在GET和POST上使用striplashes。
答案 1 :(得分:2)
这是真的@TheDeadMedic stripslashes必须像;
一样使用echo stripslashes(get_option( 'option' ));