WP_oEmbed::fetch()publicWP 2.9.0

Connects to an oEmbed provider and returns the result.

Method of the class: WP_oEmbed{}

Hooks from the method

Return

Object|false. The result in the form of an object on success, false on failure.

Usage

$WP_oEmbed = new WP_oEmbed();
$WP_oEmbed->fetch( $provider, $url, $args );
$provider(string) (required)
The URL to the oEmbed provider.
$url(string) (required)
The URL to the content that is desired to be embedded.
$args(string|array)
Additional arguments for retrieving embed HTML. See wp_oembed_get() for accepted arguments.
Default: ''

Changelog

Since 2.9.0 Introduced.

WP_oEmbed::fetch() code WP 6.5.2

public function fetch( $provider, $url, $args = '' ) {
	$args = wp_parse_args( $args, wp_embed_defaults( $url ) );

	$provider = add_query_arg( 'maxwidth', (int) $args['width'], $provider );
	$provider = add_query_arg( 'maxheight', (int) $args['height'], $provider );
	$provider = add_query_arg( 'url', urlencode( $url ), $provider );
	$provider = add_query_arg( 'dnt', 1, $provider );

	/**
	 * Filters the oEmbed URL to be fetched.
	 *
	 * @since 2.9.0
	 * @since 4.9.0 The `dnt` (Do Not Track) query parameter was added to all oEmbed provider URLs.
	 *
	 * @param string $provider URL of the oEmbed provider.
	 * @param string $url      URL of the content to be embedded.
	 * @param array  $args     Optional. Additional arguments for retrieving embed HTML.
	 *                         See wp_oembed_get() for accepted arguments. Default empty.
	 */
	$provider = apply_filters( 'oembed_fetch_url', $provider, $url, $args );

	foreach ( array( 'json', 'xml' ) as $format ) {
		$result = $this->_fetch_with_format( $provider, $format );
		if ( is_wp_error( $result ) && 'not-implemented' === $result->get_error_code() ) {
			continue;
		}

		return ( $result && ! is_wp_error( $result ) ) ? $result : false;
	}

	return false;
}