wp_send_json() WP 3.5.0

Кодує передану змінну JSON, друкує результат на екран (echo) і обриває роботу скрипта (die). Використовується для повернення даних при запитах AJAX.

Функція встановлює header заголовок:

@header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
Працює на основі:
wp_json_encode()

Хуків немає.

Повертає

null. Перериває роботу скрипта.

Використання

wp_send_json($response, $status_code, $options);
$response
(рядок/масив/число/об’єкт/логічний) (обов’язковий)
Змінна, зазвичай масив або об’єкт, яка буде кодована в JSON.
$status_code
(число)
HTTP статус код, який потрібно встановити. Які бувають статус коди,
дивіться тут . C WP 4.7.


Типово: null
$options
(число) (WP 5.6)

Опції, які будуть передані в функцію json_encode() . Бітова маска, що складається із значень:

JSON_FORCE_OBJECT
JSON_HEX_QUOT
JSON_HEX_TAG
JSON_HEX_AMP
JSON_HEX_APOS
JSON_INVALID_UTF8_IGNORE
JSON_INVALID_UTF8_SUBSTITUTE
JSON_NUMERIC_CHECK
JSON_PARTIAL_OUTPUT_ON_ERROR
JSON_PRESERVE_ZERO_FRACTION
JSON_PRETTY_PRINT
JSON_UNESCAPED_LINE_TERMINATORS
JSON_UNESCAPED_SLASHES
JSON_UNESCAPED_UNICODE
JSON_THROW_ON_ERROR

Сенс цих констант пояснюється на сторінці JSON констант .
За замовчуванням: 0

Приклади

0

#1 Приклад відправки Ajax запиту та повернення JSON результату

Цей код надсилає AJAX запит на сторінку плагіна ‘ ajax/save_field.php

jQuery(document).ready(function(){

	jQuery('#btn_save').click(function(e){
		e.preventDefault();
		jQuery.post( pluginUrl+'ajax/save_field.php', jQuery('#my-form').serialize(), function(data) {
				alert(data.message + "ID:" + data.ID);
				//This will alert "Saved ID:1"
		});
	});

});

Це код файлу, який приймає запит. Тут використовується wp_send_json() для того, щоб зручно повернути результат у форматі JSON:

<?php
// підвантажуємо WP
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );

$nonce = $_POST['_wpnonce_name'];
if( empty($_POST) || ! wp_verify_nonce($nonce, 'my-nonce') ) die('Security check');

$ return = array(
	'message' => 'Збережено',
	'ID' => 1
);

wp_send_json ($ return);

// функція сама перериває роботу скрипта
// тому тут не потрібні всякі die або exit

список змін

З версії 3.5.0Введено.
З версії 4.7.0$status_code parameter був added.
З версії 5.6.0The $options parameter був added.

Код wp_send_json() WP 6.0.2

function wp_send_json( $response, $status_code = null, $options = 0 ) {
	if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
		_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: 1: WP_REST_Response, 2: WP_Error */
				__( 'Return a %1$s або %2$s object from your callback when using the REST API.' ),
				'WP_REST_Response',
				'WP_Error'
			),
			'5.5.0'
		);
	}

	if ( ! headers_sent() ) {
		header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
		if ( null !== $status_code ) {
			status_header($status_code);
		}
	}

	echo wp_json_encode($response, $options);

	if ( wp_doing_ajax() ) {
		wp_die(
			'',
			'',
			array(
				'response' => null,
			)
		);
	} else {
		die;
	}
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *