Using WordPress ‘oembed_result’ PHP filter

The oembed_result WordPress PHP filter allows you to modify the HTML returned by the oEmbed provider.

Usage

add_filter('oembed_result', 'your_custom_function', 10, 3);

function your_custom_function($data, $url, $args) {
    // your custom code here
    return $data;
}

Parameters

  • $data: (string|false) The returned oEmbed HTML (false if unsafe).
  • $url: (string) URL of the content to be embedded.
  • $args: (string|array) Additional arguments for retrieving embed HTML. See wp_oembed_get() for accepted arguments. Default empty.

More information

See WordPress Developer Resources: oembed_result

Examples

Change video aspect ratio

Modify the aspect ratio of an embedded YouTube video.

add_filter('oembed_result', 'change_youtube_aspect_ratio', 10, 3);

function change_youtube_aspect_ratio($data, $url, $args) {
    if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) {
        $data = str_replace('width="640" height="360"', 'width="640" height="480"', $data);
    }
    return $data;
}

Add responsive Bootstrap class

Add the “embed-responsive” Bootstrap class to the oEmbed output.

add_filter('oembed_result', 'add_bootstrap_responsive_class', 10, 3);

function add_bootstrap_responsive_class($data, $url, $args) {
    $data = str_replace('<iframe', '<div class="embed-responsive embed-responsive-16by9"><iframe', $data);
    $data = str_replace('</iframe>', '</iframe></div>', $data);
    return $data;
}

Remove related videos from the end of an embedded YouTube video.

add_filter('oembed_result', 'remove_youtube_related_videos', 10, 3);

function remove_youtube_related_videos($data, $url, $args) {
    if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) {
        $data = str_replace('?feature=oembed', '?feature=oembed&rel=0', $data);
    }
    return $data;
}

Force HTTPS for oEmbed

Ensure that oEmbed content is loaded over HTTPS.

add_filter('oembed_result', 'force_https_oembed', 10, 3);

function force_https_oembed($data, $url, $args) {
    return str_replace('http://', 'https://', $data);
}

Add a custom wrapper to oEmbed content

Add a custom wrapper around the oEmbed content.

add_filter('oembed_result', 'wrap_oembed_content', 10, 3);

function wrap_oembed_content($data, $url, $args) {
    return '<div class="my-custom-wrapper">' . $data . '</div>';
}