The oembed_fetch_url WordPress PHP filter allows you to modify the oEmbed URL that is fetched for embedding content.
Usage
add_filter('oembed_fetch_url', 'my_custom_oembed_fetch_url', 10, 3);
function my_custom_oembed_fetch_url($provider, $url, $args) {
// your custom code here
return $provider;
}
Parameters
$provider(string) – URL of the oEmbed provider.$url(string) – URL of the content to be embedded.$args(array) – Additional arguments for retrieving embed HTML. See wp_oembed_get() for accepted arguments. Default empty.
More information
See WordPress Developer Resources: oembed_fetch_url
Examples
Change oEmbed provider
Change the oEmbed provider for a specific content URL.
add_filter('oembed_fetch_url', 'change_oembed_provider', 10, 3);
function change_oembed_provider($provider, $url, $args) {
if ($url == 'https://example.com/specific-content/') {
return 'https://custom-oembed-provider.com/oembed';
}
return $provider;
}
Add query parameters to provider URL
Add custom query parameters to the oEmbed provider URL.
add_filter('oembed_fetch_url', 'add_query_params_to_provider', 10, 3);
function add_query_params_to_provider($provider, $url, $args) {
$provider = add_query_arg('custom_param', 'value', $provider);
return $provider;
}
Change oEmbed provider based on content type
Use a different oEmbed provider for video content.
add_filter('oembed_fetch_url', 'change_oembed_provider_for_videos', 10, 3);
function change_oembed_provider_for_videos($provider, $url, $args) {
if (strpos($url, 'video') !== false) {
return 'https://video-oembed-provider.com/oembed';
}
return $provider;
}
Disable oEmbed discovery
Disable oEmbed discovery when the provider URL is not found in the built-in providers list.
add_filter('oembed_fetch_url', 'disable_oembed_discovery', 10, 3);
function disable_oembed_discovery($provider, $url, $args) {
$args['discover'] = false;
return $provider;
}
Set maximum width for embeds
Set a custom maximum width for all embeds.
add_filter('oembed_fetch_url', 'set_custom_max_width', 10, 3);
function set_custom_max_width($provider, $url, $args) {
$args['width'] = 800;
return $provider;
}