正如标题的所说,今天在完善插件的代码的时候,踩的最大的一个坑。
而且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
中,即可。