5

Wordpress has wp_oembed_get, which I use to get rich media content with embed.ly. I've previously used oEmbed api calls such as this. As you can see it provides thumbnail_url, which I like to use instead of embedding the video. How can I do this with wordpress?

Thanks!

1 Answer 1

9

Use the oembed_dataparse filter to modify the resulting HTML output by any given oembed call.

Example:

add_filter('oembed_dataparse','test',10,3);

function test($return, $data, $url) {
    if ($data->provider_name == 'YouTube') {
        return "<img src='{$data->thumbnail_url}'>";
    }
    else return $return;
}

Then putting this in a post:

[embed]http://www.youtube.com/watch?v=oHg5SJYRHA0[/embed]

Will give you a picture of Rick Astley instead of a flash video of him. :)

Edit: Note that WordPress caches oEmbed results in postmeta. So after making your code, you'll have to go and Update a post for it to know to go re-get the oEmbed data and have code like this take effect. In case you want to do testing and such.

2
  • Thanks, Otto! Can you explain what each argument does ($return, $data, $url)? The reason why I ask is because I'm not implementing this in shortcode but rather in my template.
    – FLX
    Jun 9, 2011 at 12:48
  • 1
    $return is the normal HTML that the oEmbed process would return. $data is the data received from the oEmbed call to their server, in an object format. $url is the original URL being queried for oEmbed info.
    – Otto
    Jun 10, 2011 at 15:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.