Posted By

sdxxx on 12/22/10


Tagged

wordpress


Versions (?)

Who likes this?

4 people have marked this snippet as a favorite

sdxxx
baires
pintop
zreedeecom


Creating Simple oEmbed-Based WordPress Shortcodes


 / Published in: PHP
 

URL: http://www.viper007bond.com/2010/06/23/creating-simple-oembed-based-wordpress-shortcodes/

Say you wanted to create a shortcode like this: [youtube id="991WcoEPwb8"]

And instead of manually creating the HTML yourself, you wanted to use YouTube’s oEmbed provider to get the HTML. While that’s easy to do using WordPress’ existing functions (wpoembedget() for example), you must implement your own caching of the result as WordPress’ oEmbed class does not include any caching of it’s own.

However, WordPress comes with an [embed] shortcode that’s also secretly used for the shortcode-less embeds. A cool trick is to make that shortcode’s existing code (complete with caching) work for you! This post explains how to do it.

  1. add_shortcode( 'youtube', 'my_youtube_shortcode' );
  2.  
  3. function my_youtube_shortcode( $atts ) {
  4.  
  5. // We need to use the WP_Embed class instance
  6. global $wp_embed;
  7.  
  8. // The "id" parameter is required
  9. if ( empty($atts['id']) )
  10. return '';
  11.  
  12. // Construct the YouTube URL
  13. $url = 'http://www.youtube.com/watch?v=' . $atts['id'];
  14.  
  15. // Run the URL through the handler.
  16. // This handler handles calling the oEmbed class
  17. // and more importantly will also do the caching!
  18. return $wp_embed->shortcode( $atts, $url );
  19. }

Report this snippet  

You need to login to post a comment.