Take the 2-minute tour ×
WordPress Development Stack Exchange is a question and answer site for WordPress developers and administrators. It's 100% free, no registration required.

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!

share|improve this question

1 Answer 1

up vote 6 down vote accepted

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.

share|improve this answer
    
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 '11 at 12:48
    
$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 '11 at 15:50

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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