Return to Snippet

Revision: 37975
at December 22, 2010 00:00 by sdxxx


Initial Code
add_shortcode( 'youtube', 'my_youtube_shortcode' );
 
function my_youtube_shortcode( $atts ) {
 
    // We need to use the WP_Embed class instance
    global $wp_embed;
 
    // The "id" parameter is required
    if ( empty($atts['id']) )
        return '';
 
    // Construct the YouTube URL
    $url = 'http://www.youtube.com/watch?v=' . $atts['id'];
 
    // Run the URL through the  handler.
    // This handler handles calling the oEmbed class
    // and more importantly will also do the caching!
    return $wp_embed->shortcode( $atts, $url );
}

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

Initial Description
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 (wp_oembed_get() 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.

Initial Title
Creating Simple oEmbed-Based WordPress Shortcodes

Initial Tags
wordpress

Initial Language
PHP