通过更深入的解释来扩展@rinogo的答案,并提供另一种解决方法。
在 wp-settings 中.php有一个无条件调用wp_magic_quotes
// Add magic quotes and set up $_REQUEST ( $_GET + $_POST )
wp_magic_quotes();
WordPress无论如何都可以转义引号
function wp_magic_quotes() {
// If already slashed, strip.
// Escape with wpdb.
// Force REQUEST to be GET + POST.
}
有趣的是,此调用是在加载插件之后,在加载主题之前进行的。所以,在你的插件的顶部
// A hack to cope with un-configurable call to wp_magic_quotes
// E.G. Make the original $_POST available through a global $_REAL_POST
$_REAL_GET = $_GET;
$_REAL_POST = $_POST;
$_REAL_COOKIE = $_COOKIE;
$_REAL_REQUEST = $_REQUEST;
然后,您可以在需要的地方自由使用等来代替(记住它是全局的,而不是超级全局的)。还要记住,虽然你的插件在主题之前加载,但如果主题调用其中一个插件函数,它使用,它应该从中读取以获取未转义的值。$_REAL_POST
$_POST
$_POST
$_REAL_POST