wp_json_encode()WP 4.1.0

Кодирует переданную переменную в JSON формат. Проверяет строки и переводит их в UTF-8.

Передаваемая переменная может содержать любой тип данных: массив, строку, объект, число и т.д.

Работает на основе PHP функции json_encode().

Основа для: wp_send_json()
1 раз — 0.000001 сек (скорость света) | 50000 раз — 0.09 сек (скорость света) | PHP 7.2.5, WP 4.9.8

Хуков нет.

Возвращает

Строку|false. Логическое/строку: строку JSON или false если не удалось получить строку.

Использование

wp_json_encode( $data, $options, $depth );
$data(смешанный) (обязательный)
Переменная содержащая данные, которые нужно превратить в JSON строку.
$options(число)

Опции, которые будут переданы в функцию PHP json_encode().

Константы объединяемые через | (битовая маска):

JSON_HEX_QUOT
JSON_HEX_TAG
JSON_HEX_AMP
JSON_HEX_APOS
JSON_NUMERIC_CHECK
JSON_PRETTY_PRINT
JSON_UNESCAPED_SLASHES
JSON_FORCE_OBJECT
JSON_PRESERVE_ZERO_FRACTION
JSON_UNESCAPED_UNICODE
JSON_PARTIAL_OUTPUT_ON_ERROR

Значение каждой константы объясняется на странице JSON констант.

По умолчанию: 0

$depth(число)
Максимальная глубина до которой будет обрабатываться $data. Должна быть больше 0.
По умолчанию: 512

Примеры

0

#1 Демонстрация работы wp_json_encode()

wp_json_encode( 'one' ); // "one"

wp_json_encode( 2 ); // 2

wp_json_encode( array( 1, 'two' ) ); // [1,"two"]

wp_json_encode( (object) array( 1, 'two' ) ); // {"0":1,"1":"two"}

Список изменений

С версии 4.1.0 Введена.
С версии 5.3.0 No longer handles support for PHP < 5.6.
С версии 6.5.0 The $data parameter has been renamed to $value and the $options parameter to $flags for parity with PHP.

Код wp_json_encode() WP 6.5.2

function wp_json_encode( $value, $flags = 0, $depth = 512 ) {
	$json = json_encode( $value, $flags, $depth );

	// If json_encode() was successful, no need to do more confidence checking.
	if ( false !== $json ) {
		return $json;
	}

	try {
		$value = _wp_json_sanity_check( $value, $depth );
	} catch ( Exception $e ) {
		return false;
	}

	return json_encode( $value, $flags, $depth );
}