wp_is_jsonp_request()WP 5.2.0

Checks whether current request is a JSONP request, or is expecting a JSONP response.

1 time — 0.000001 sec (speed of light) | 50000 times — 0.01 sec (speed of light) | PHP 7.3.3, WP 5.2.3
Hooks from the function

Return

true|false. True if JSONP request, false otherwise.

Usage

wp_is_jsonp_request();

Examples

0

#1 Return JSONP data if it is a JSONP query

$data = [ 'foo'=>'bar' ];

if( wp_is_jsonp_request() ){

	header( 'Content-Type: application/javascript; charset=utf-8' );
	header( 'X-Content-Type-Options: nosniff' );
	header( 'X-Robots-Tag: noindex' );
	nocache_headers();

	$jsonp_callback = $_GET['_jsonp'];

	// Prepend '/**/' to mitigate possible JSONP Flash attacks.
	// https://miki.it/blog/2014/7/8/abusing-jsonp-with-rosetta-flash/
	echo '/**/' . $jsonp_callback . '(' . wp_json_encode( $data ) . ')';
}

Changelog

Since 5.2.0 Introduced.

wp_is_jsonp_request() code WP 6.4.3

function wp_is_jsonp_request() {
	if ( ! isset( $_GET['_jsonp'] ) ) {
		return false;
	}

	if ( ! function_exists( 'wp_check_jsonp_callback' ) ) {
		require_once ABSPATH . WPINC . '/functions.php';
	}

	$jsonp_callback = $_GET['_jsonp'];
	if ( ! wp_check_jsonp_callback( $jsonp_callback ) ) {
		return false;
	}

	/** This filter is documented in wp-includes/rest-api/class-wp-rest-server.php */
	$jsonp_enabled = apply_filters( 'rest_jsonp_enabled', true );

	return $jsonp_enabled;
}