Вверху app / code / core / Mage / Core / functions.php есть это:
if (get_magic_quotes_gpc()) {
function mageUndoMagicQuotes($array, $topLevel=true) {
$newArray = array();
foreach($array as $key => $value) {
if (!$topLevel) {
$newKey = stripslashes($key);
if ($newKey!==$key) {
unset($array[$key]);
}
$key = $newKey;
}
$newArray[$key] = is_array($value) ? mageUndoMagicQuotes($value, false) : stripslashes($value);
}
return $newArray;
}
$_GET = mageUndoMagicQuotes($_GET);
$_POST = mageUndoMagicQuotes($_POST);
$_COOKIE = mageUndoMagicQuotes($_COOKIE);
$_REQUEST = mageUndoMagicQuotes($_REQUEST);
}
Просто скопируйте этот файл в локальный каталог ( app / code / local / Mage / Core / functions.php ) и закомментируйте оператор if, чтобы он всегда выполнялся.
// if (get_magic_quotes_gpc()) {
function mageUndoMagicQuotes($array, $topLevel=true) {
$newArray = array();
foreach($array as $key => $value) {
if (!$topLevel) {
$newKey = stripslashes($key);
if ($newKey!==$key) {
unset($array[$key]);
}
$key = $newKey;
}
$newArray[$key] = is_array($value) ? mageUndoMagicQuotes($value, false) : stripslashes($value);
}
return $newArray;
}
$_GET = mageUndoMagicQuotes($_GET);
$_POST = mageUndoMagicQuotes($_POST);
$_COOKIE = mageUndoMagicQuotes($_COOKIE);
$_REQUEST = mageUndoMagicQuotes($_REQUEST);
// }
Это необходимо, потому что WordPress проверяет, отключены ли магические кавычки, и если это так, то все равно запускает магические кавычки. Есть длительные дискуссии о том, должно ли это произойти, но единодушное мнение о том, что функциональность может открыть дыры в безопасности в старых плагинах или темах, которые не работают вокруг него, поэтому не ждите, что WordPress удалит эту функциональность в ближайшее время.