WP_REST_Request::from_url()public staticWP 4.5.0

Retrieves a WP_REST_Request object from a full URL.

Method of the class: WP_REST_Request{}

Hooks from the method

Return

WP_REST_Request|false. WP_REST_Request object on success, false on failure.

Usage

$result = WP_REST_Request::from_url( $url );
$url(string) (required)
URL with protocol, domain, path and query args.

Changelog

Since 4.5.0 Introduced.

WP_REST_Request::from_url() code WP 6.4.3

public static function from_url( $url ) {
	$bits         = parse_url( $url );
	$query_params = array();

	if ( ! empty( $bits['query'] ) ) {
		wp_parse_str( $bits['query'], $query_params );
	}

	$api_root = rest_url();
	if ( get_option( 'permalink_structure' ) && str_starts_with( $url, $api_root ) ) {
		// Pretty permalinks on, and URL is under the API root.
		$api_url_part = substr( $url, strlen( untrailingslashit( $api_root ) ) );
		$route        = parse_url( $api_url_part, PHP_URL_PATH );
	} elseif ( ! empty( $query_params['rest_route'] ) ) {
		// ?rest_route=... set directly.
		$route = $query_params['rest_route'];
		unset( $query_params['rest_route'] );
	}

	$request = false;
	if ( ! empty( $route ) ) {
		$request = new WP_REST_Request( 'GET', $route );
		$request->set_query_params( $query_params );
	}

	/**
	 * Filters the REST API request generated from a URL.
	 *
	 * @since 4.5.0
	 *
	 * @param WP_REST_Request|false $request Generated request object, or false if URL
	 *                                       could not be parsed.
	 * @param string                $url     URL the request was generated from.
	 */
	return apply_filters( 'rest_request_from_url', $request, $url );
}