正如标题的所说,今天在完善插件的代码的时候,踩的最大的一个坑。
而且wp_magic_quotes()这个方法官方并没有相关的hook钩子去取消,难受的一b,该方法就在根目录的wp-settings.php文件中。
怎么说,该方法有好有坏把,打个例子,原生的$_REQUEST获取到是"a",用了该方法后\"a\",也就是增加了转义反斜线,但是官方也是出于安全考虑,反正对于我来说有点鸡肋的,所以只能动手去删除掉,但是又不能去动官方的核心文件,免了一升级就没有了。
所以就动手写了个方法,恢复了原貌,代码如下。
add_action('init', 'Yr_Remove_Wp_Extra_Add_Slashes');
/**
* 该方法就是去除那些强制加的转义字符
* wordpress会强制给$_GET`, `$_POST`, `$_COOKIE`, and `$_SERVER添加转义字符,具体实现细节在wp-settings.php/wp_magic_quotes();
*/
function Yr_Remove_Wp_Extra_Add_Slashes()
{
function _stripslashes(&$var)
{
if (is_array($var)) {
foreach ($var as $k => &$v) {
_stripslashes($v);
}
} else {
$var = stripslashes($var);
}
}
_stripslashes($_GET);
_stripslashes($_POST);
_stripslashes($_COOKIE);
_stripslashes($_REQUEST);
}
将该代码放到当前所使用的主题下function.php中,即可。