wp_magic_quotes()
Изменяет глобальные переменные $_GET, $_POST, $_REQUEST, $_COOKIE, $_SERVER - добавляет в их значения волшебные кавычки.
Принудительно обновляет переменную $_REQUEST делая из нее объединенный массив из $_GET + $_POST.
Функция удаляет экранированные слэши если сервер их устанавливает и затем добавляет их снова с помощью функции add_magic_quotes().
Когда срабатывает
Эта функция срабатывает при каждом запросе в WordPress. Поэтому в среде WordPress все данные указанных в глобальных переменных всегда экранированы!
Функция срабатывает сразу после события plugins_loaded. Т.е. после того как файлы плагинов подключены и плагины запущены (инициализированы). Но до того, как был сделан основной запрос WordPress - wp(), до того как была подключена тема и её файл functions.php и до события init.
Что такое волшебные кавычки?
Волшебные кавычки (Magic Quotes) - это процесс автоматического экранирования входящих данных PHP-скрипта. Цель такого экранирования - упростить разработку для новичков.
Автоматическое экранирование устарело с версии PHP 5.3. и было удалено с версии PHP 5.4. Однако в среде WordPress такое экранировании работает до сих пор. Это сделано в целях соблюдения единого стандарта для входящих данных.
Волшебные кавычки экранируют обратным слэшем следующие символы: ' " \
и NULL
. Также ведет себя функция addslashes() или её аналог в WordPress wp_slash().
Это внутренняя функция WP
У этой функции нет примеров использования. Потому что её не нужно использовать где-либо, она автоматически вызывается сразу после события plugins_loaded.
Эту особенность WordPress нужно знать, чтобы понимать как будут выглядеть входящие данные при разработке тем и плагинов.
Внутренняя функция — эта функция рассчитана на использование самим ядром. Не рекомендуется использовать эту функцию в своем коде.
Хуков нет.
Возвращает
null
. Ничего
Использование
wp_magic_quotes();
Примеры
#1 Удалим обратные слэши там где они не нужны
При получении JSON строки её нужно очистить чтобы в дальнейшем распарсить и использовать в коде.
$json = strval( $_POST['urls'] ); // Unfortunately, WP applies magic quotes to POST data. if ( function_exists('wp_magic_quotes') && did_action('plugins_loaded') ) { $json = stripslashes( $json ); }
Список изменений
С версии 3.0.0 | Введена. |
Код wp_magic_quotes() wp magic quotes WP 6.6.2
function wp_magic_quotes() { // Escape with wpdb. $_GET = add_magic_quotes( $_GET ); $_POST = add_magic_quotes( $_POST ); $_COOKIE = add_magic_quotes( $_COOKIE ); $_SERVER = add_magic_quotes( $_SERVER ); // Force REQUEST to be GET + POST. $_REQUEST = array_merge( $_GET, $_POST ); }