WP_oEmbed_Controller::get_proxy_item

Advertisement

Summery Summery

Callback for the proxy API endpoint.

Syntax Syntax

WP_oEmbed_Controller::get_proxy_item( WP_REST_Request $request )

Description Description

Returns the JSON object for the proxied item.

Parameters Parameters

$request

(WP_REST_Request) (Required) Full data about the request.

Return Return

(object|WP_Error) oEmbed response data or WP_Error on failure.

Source Source

File: wp-includes/class-wp-oembed-controller.php

	 * @param WP_REST_Request $request Full data about the request.
	 * @return object|WP_Error oEmbed response data or WP_Error on failure.
	 */
	public function get_proxy_item( $request ) {
		$args = $request->get_params();

		// Serve oEmbed data from cache if set.
		unset( $args['_wpnonce'] );
		$cache_key = 'oembed_' . md5( serialize( $args ) );
		$data      = get_transient( $cache_key );
		if ( ! empty( $data ) ) {
			return $data;
		}

		$url = $request['url'];
		unset( $args['url'] );

		// Copy maxwidth/maxheight to width/height since WP_oEmbed::fetch() uses these arg names.
		if ( isset( $args['maxwidth'] ) ) {
			$args['width'] = $args['maxwidth'];
		}
		if ( isset( $args['maxheight'] ) ) {
			$args['height'] = $args['maxheight'];
		}

		// Short-circuit process for URLs belonging to the current site.
		$data = get_oembed_response_data_for_url( $url, $args );

		if ( $data ) {
			return $data;
		}

		$data = _wp_oembed_get_object()->get_data( $url, $args );

		if ( false === $data ) {
			// Try using a classic embed, instead.
			global $wp_embed;

			/* @var WP_Embed $wp_embed */
			$html = $wp_embed->get_embed_handler_html( $args, $url );

			if ( $html ) {
				global $wp_scripts;
				// Check if any scripts were enqueued by the shortcode, and include them in the response.
				$enqueued_scripts = array();

				foreach ( $wp_scripts->queue as $script ) {
					$enqueued_scripts[] = $wp_scripts->registered[ $script ]->src;
				}

				return (object) array(
					'provider_name' => __( 'Embed Handler' ),
					'html'          => $html,
					'scripts'       => $enqueued_scripts,
				);
			}

Advertisement

Changelog Changelog

Changelog
Version Description
4.8.0 Introduced.

See also See also

Advertisement

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.