WP_oEmbed::get_provider( string $url, string|array $args = '' ): string|false

Takes a URL and returns the corresponding oEmbed provider’s URL, if there is one.

Description

See also

Parameters

$urlstringrequired
The URL to the content.
$argsstring|arrayoptional
Additional provider arguments.
  • discover bool
    Optional. Determines whether to attempt to discover link tags at the given URL for an oEmbed provider when the provider URL is not found in the built-in providers list. Default true.

Default:''

Return

string|false The oEmbed provider URL on success, false on failure.

Source

public function get_provider( $url, $args = '' ) {
	$args = wp_parse_args( $args );

	$provider = false;

	if ( ! isset( $args['discover'] ) ) {
		$args['discover'] = true;
	}

	foreach ( $this->providers as $match_mask => $data ) {
		$provider_data = $this->sanitize_provider( $match_mask, $data );
		if ( null === $provider_data ) {
			continue;
		}
		$match_mask = $provider_data['match_mask'];

		// Turn the asterisk-type provider URLs into regex.
		if ( ! $provider_data['is_regex'] ) {
			$match_mask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $match_mask ), '#' ) ) . '#i';
			$match_mask = (string) preg_replace( '|^#http\\\://|', '#https?\://', $match_mask );
		}

		if ( preg_match( $match_mask, $url ) ) {
			$provider = str_replace( '{format}', 'json', $provider_data['endpoint'] ); // JSON is easier to deal with than XML.
			break;
		}
	}

	if ( ! $provider && $args['discover'] ) {
		$provider = $this->discover( $url );
	}

	return $provider;
}

Changelog

VersionDescription
4.0.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.