Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/wp-includes/functions.php
Original file line number Diff line number Diff line change
Expand Up @@ -4038,6 +4038,10 @@ function _wp_json_prepare_data( $data ) {
* @param int $status_code The HTTP status code to output.
*/
function wp_send_json( $response, $status_code = null ) {
if ( defined( 'REST_REQUEST' ) && REST_REQUEST ) {
_doing_it_wrong( __FUNCTION__, __( 'Return a WP_REST_Response or WP_Error object from your callback when using the REST API.' ), '5.5.0' );
}

if ( ! headers_sent() ) {
header( 'Content-Type: application/json; charset=' . get_option( 'blog_charset' ) );
if ( null !== $status_code ) {
Expand Down
29 changes: 29 additions & 0 deletions src/wp-includes/rest-api.php
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ function rest_api_default_filters() {
add_filter( 'deprecated_function_trigger_error', '__return_false' );
add_action( 'deprecated_argument_run', 'rest_handle_deprecated_argument', 10, 3 );
add_filter( 'deprecated_argument_trigger_error', '__return_false' );
add_action( 'doing_it_wrong_run', 'rest_handle_doing_it_wrong', 10, 3 );
add_filter( 'doing_it_wrong_trigger_error', '__return_false' );
}

// Default serving.
Expand Down Expand Up @@ -597,6 +599,33 @@ function rest_handle_deprecated_argument( $function, $message, $version ) {
header( sprintf( 'X-WP-DeprecatedParam: %s', $string ) );
}

/**
* Handles _doing_it_wrong errors.
*
* @since 5.5.0
*
* @param string $function The function that was called.
* @param string $message A message explaining what has been done incorrectly.
* @param string|null $version The version of WordPress where the message was added.
*/
function rest_handle_doing_it_wrong( $function, $message, $version ) {
if ( ! WP_DEBUG || headers_sent() ) {
return;
}

if ( is_null( $version ) ) {
/* translators: Developer debugging message. 1: PHP function name, 2: Explanatory message */
$string = __( '%1$s (%2$s)' );
$string = sprintf( $string, $function, $message );
} else {
/* translators: Developer debugging message. 1: PHP function name, 2: Version information message, 3: Explanatory message. */
$string = __( '%1$s (since %2$s; %3$s)' );
$string = sprintf( $string, $function, $version, $message );
}

header( sprintf( 'X-WP-DoingItWrong: %s', $string ) );
}

/**
* Sends Cross-Origin Resource Sharing headers with API requests.
*
Expand Down