wp_send_json_error

The timeline below displays how wordpress function wp_send_json_error has changed across different WordPress versions. If a version is not listed, refer to the next available version below.

WordPress Version: 6.5

/**
 * Sends a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$value` parameter is a WP_Error object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$value` parameter is now processed if a WP_Error object is passed in.
 * @since 4.7.0 The `$status_code` parameter was added.
 * @since 5.6.0 The `$flags` parameter was added.
 *
 * @param mixed $value       Optional. Data to encode as JSON, then print and die. Default null.
 * @param int   $status_code Optional. The HTTP status code to output. Default null.
 * @param int   $flags       Optional. Options to be passed to json_encode(). Default 0.
 */
function wp_send_json_error($value = null, $status_code = null, $flags = 0)
{
    $response = array('success' => false);
    if (isset($value)) {
        if (is_wp_error($value)) {
            $result = array();
            foreach ($value->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $value;
        }
    }
    wp_send_json($response, $status_code, $flags);
}

WordPress Version: 6.1

/**
 * Sends a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$data` parameter is a WP_Error object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$data` parameter is now processed if a WP_Error object is passed in.
 * @since 4.7.0 The `$status_code` parameter was added.
 * @since 5.6.0 The `$options` parameter was added.
 *
 * @param mixed $data        Optional. Data to encode as JSON, then print and die. Default null.
 * @param int   $status_code Optional. The HTTP status code to output. Default null.
 * @param int   $options     Optional. Options to be passed to json_encode(). Default 0.
 */
function wp_send_json_error($data = null, $status_code = null, $options = 0)
{
    $response = array('success' => false);
    if (isset($data)) {
        if (is_wp_error($data)) {
            $result = array();
            foreach ($data->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $data;
        }
    }
    wp_send_json($response, $status_code, $options);
}

WordPress Version: 5.6

/**
 * Send a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$data` parameter is a WP_Error object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$data` parameter is now processed if a WP_Error object is passed in.
 * @since 4.7.0 The `$status_code` parameter was added.
 * @since 5.6.0 The `$options` parameter was added.
 *
 * @param mixed $data        Optional. Data to encode as JSON, then print and die. Default null.
 * @param int   $status_code Optional. The HTTP status code to output. Default null.
 * @param int   $options     Optional. Options to be passed to json_encode(). Default 0.
 */
function wp_send_json_error($data = null, $status_code = null, $options = 0)
{
    $response = array('success' => false);
    if (isset($data)) {
        if (is_wp_error($data)) {
            $result = array();
            foreach ($data->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $data;
        }
    }
    wp_send_json($response, $status_code, $options);
}

WordPress Version: 4.7

/**
 * Send a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$data` parameter is a WP_Error object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$data` parameter is now processed if a WP_Error object is passed in.
 * @since 4.7.0 The `$status_code` parameter was added.
 *
 * @param mixed $data        Data to encode as JSON, then print and die.
 * @param int   $status_code The HTTP status code to output.
 */
function wp_send_json_error($data = null, $status_code = null)
{
    $response = array('success' => false);
    if (isset($data)) {
        if (is_wp_error($data)) {
            $result = array();
            foreach ($data->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $data;
        }
    }
    wp_send_json($response, $status_code);
}

WordPress Version: 4.6

/**
 * Send a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$data` parameter is a WP_Error object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$data` parameter is now processed if a WP_Error object is passed in.
 *
 * @param mixed $data Data to encode as JSON, then print and die.
 */
function wp_send_json_error($data = null)
{
    $response = array('success' => false);
    if (isset($data)) {
        if (is_wp_error($data)) {
            $result = array();
            foreach ($data->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $data;
        }
    }
    wp_send_json($response);
}

WordPress Version: 4.1

/**
 * Send a JSON response back to an Ajax request, indicating failure.
 *
 * If the `$data` parameter is a {@see WP_Error} object, the errors
 * within the object are processed and output as an array of error
 * codes and corresponding messages. All other types are output
 * without further processing.
 *
 * @since 3.5.0
 * @since 4.1.0 The `$data` parameter is now processed if a {@see WP_Error}
 *              object is passed in.
 *
 * @param mixed $data Data to encode as JSON, then print and die.
 */
function wp_send_json_error($data = null)
{
    $response = array('success' => false);
    if (isset($data)) {
        if (is_wp_error($data)) {
            $result = array();
            foreach ($data->errors as $code => $messages) {
                foreach ($messages as $message) {
                    $result[] = array('code' => $code, 'message' => $message);
                }
            }
            $response['data'] = $result;
        } else {
            $response['data'] = $data;
        }
    }
    wp_send_json($response);
}

WordPress Version: 3.7

/**
 * Send a JSON response back to an Ajax request, indicating failure.
 *
 * @since 3.5.0
 *
 * @param mixed $data Data to encode as JSON, then print and die.
 */
function wp_send_json_error($data = null)
{
    $response = array('success' => false);
    if (isset($data)) {
        $response['data'] = $data;
    }
    wp_send_json($response);
}