Функция wp_json_encode()
в WordPress используется для кодирования переменных в JSON-строку. Это удобный инструмент, особенно при разработке API и AJAX-функциональности, где требуется передавать данные между сервером и клиентом в формате JSON. wp_json_encode()
— это обертка над стандартной PHP-функцией json_encode()
, которая также выполняет дополнительные проверки на корректность кодировки строк, конвертируя их в UTF-8 для совместимости с JSON.
wp_json_encode( mixed $value, int $flags, int $depth = 512 ): string|false
Параметры функции
$value
(смешанный) Обязательный. Переменная, которая будет закодирована в формат JSON. Это может быть массив, объект, строка, число и т.д.$flags
(целое) Необязательный. Флаги, которые будут переданы вjson_encode()
. Можно комбинировать несколько флагов с использованием побитового оператора|
.
Примеры флагов:JSON_HEX_QUOT
: кодирует двойные кавычки.JSON_PRETTY_PRINT
: делает JSON человеко-читаемым.JSON_UNESCAPED_UNICODE
: предотвращает экранирование символов Юникода.
$depth
(целое) Необязательный. Определяет максимальную глубину рекурсии для кодирования. Должен быть больше 0. Значение по умолчанию — 512.
Возвращаемое значение
- Строка JSON (string) при успешном выполнении.
false
(bool) в случае ошибки.
Пример 1: Преобразование массива в JSON
Создадим массив с информацией и преобразуем его в JSON-строку.
$data = [
'name' => 'Иван',
'age' => 30,
'location' => 'Москва',
];
$json_data = wp_json_encode($data);
echo $json_data;
Результат:
{"name":"Иван","age":30,"location":"Москва"}
Пример 2: JSON с форматированием (применение флага JSON_PRETTY_PRINT
)
С помощью флага JSON_PRETTY_PRINT
можно сделать JSON-строку человеко-читаемой, добавив отступы и переносы строк.
$data = [
'products' => [
['id' => 1, 'name' => 'Продукт 1', 'price' => 100],
['id' => 2, 'name' => 'Продукт 2', 'price' => 200],
]
];
$json_data = wp_json_encode($data, JSON_PRETTY_PRINT);
echo $json_data;
Результат:
{
"products": [
{
"id": 1,
"name": "Продукт 1",
"price": 100
},
{
"id": 2,
"name": "Продукт 2",
"price": 200
}
]
}
Пример 3: Применение флага JSON_UNESCAPED_UNICODE
При использовании флага JSON_UNESCAPED_UNICODE
символы Юникода (например, кириллица) не будут экранированы, что делает JSON более читабельным.
$data = [
'message' => 'Привет, мир!'
];
$json_data = wp_json_encode($data, JSON_UNESCAPED_UNICODE);
echo $json_data;
Результат:
{"message":"Привет, мир!"}
Пример 4: Обработка вложенных массивов с ограничением глубины
Если установить глубину меньше, чем вложенность массива, функция вернет ошибку JSON, так как достигнет максимальной глубины.
$data = [
'level1' => [
'level2' => [
'level3' => [
'level4' => 'Пример данных'
]
]
]
];
$json_data = wp_json_encode($data, 0, 3); // Устанавливаем максимальную глубину 3
echo $json_data;
Результат:
false
Пример 5: Валидация данных перед JSON-кодированием
Проверим данные перед JSON-кодированием, чтобы исключить неверные типы данных, которые могут вызвать ошибку.
$data = [
'title' => 'Заголовок',
'content' => "\xB1 невалидный символ"
];
if ($json_data = wp_json_encode($data)) {
echo $json_data;
} else {
echo 'Ошибка: данные не могут быть закодированы в JSON.';
}
Результат: Если в данных присутствуют недопустимые символы или типы, wp_json_encode()
вернет false
и выведет сообщение об ошибке.
Заключение
Функция wp_json_encode()
— это мощный инструмент для работы с JSON в WordPress. Он не только выполняет кодирование в JSON, но и обеспечивает совместимость с различными языковыми кодировками и проверяет данные на корректность, что делает его надежным выбором для передачи данных.