Функция wp_slash()
добавляет обратные слэши (\
) в строку или рекурсивно добавляет их к строкам внутри массива. Это необходимо для подготовки данных перед передачей в WordPress API-функции, которые ожидают, что входные значения будут экранированы, например wp_insert_post()
, update_post_meta()
и т.п.
Стоит помнить, что функцию не следует использовать для экранирования значений при выполнении SQL-запросов — она предназначена исключительно для подготовки данных перед использованием API, но не для защиты от SQL-инъекций. Для удаления экранирующих слэшей в данных можно использовать функцию wp_unslash()
.
wp_slash( string|array $value ): string|array
Параметры
$value
(строка|массив) – Обязательный. Строка или массив строк, к которым нужно добавить слэши.
Возвращаемое значение
Функция возвращает экранированное значение в том же типе, который был передан (строка или массив).
Пример 1: Использование wp_slash()
для экранирования строки
Когда требуется экранировать строку перед сохранением её через API-функции, можно использовать wp_slash()
.
// Исходная строка
$title = "John's Guide to PHP";
// Добавляем экранирование
$title_slashed = wp_slash( $title );
echo $title_slashed;
// Результат:
// John\'s Guide to PHP
Пример 2: Использование wp_slash()
для экранирования значений в массиве
wp_slash()
также поддерживает массивы. Если передан массив, функция рекурсивно добавит экранирование для всех строк, в том числе и в вложенных массивах.
// Исходный массив с текстами
$data = [
"Alice's Adventures",
"Year '21",
[
"Student's Journal",
["Grandparent's Advice"]
]
];
// Добавляем экранирование
$data_slashed = wp_slash( $data );
print_r( $data_slashed );
/*
Результат:
Array
(
[0] => Alice\'s Adventures
[1] => Year \'21
[2] => Array
(
[0] => Student\'s Journal
[1] => Array
(
[0] => Grandparent\'s Advice
)
)
)
*/
Пример 3: Использование wp_slash()
в коде для сохранения пользовательских данных
При сохранении пользовательского ввода через WordPress API важно экранировать значения, чтобы избежать ошибок, вызванных наличием специальных символов.
function save_custom_meta( $post_id ) {
// Проверка и обработка пользовательского ввода
if ( isset( $_POST['custom_field'] ) ) {
$value = wp_slash( $_POST['custom_field'] );
// Сохранение экранированного значения
update_post_meta( $post_id, '_custom_meta_key', $value );
}
}
add_action( 'save_post', 'save_custom_meta' );
Пример 4: Применение wp_slash()
к массиву данных перед использованием в wp_insert_post()
Перед добавлением записи в базу данных с помощью wp_insert_post()
необходимо экранировать данные, содержащие специальные символы.
// Данные для новой записи
$post_data = [
'post_title' => "Carl's Story",
'post_content' => "This is Carl's journey to coding."
];
// Применяем wp_slash() к массиву данных
$post_data_slashed = wp_slash( $post_data );
// Создаём запись
$post_id = wp_insert_post( $post_data_slashed );
Заключение
Функция wp_slash()
— это полезный инструмент для подготовки данных перед их использованием в WordPress API, что особенно важно для корректной обработки пользовательского ввода и работы с базой данных.