I had posted a question on Short Codes to the wp-hackers mailing list and got a pointed to an article on the Codex which explained the process of coding up a short code. I expected it to be more involved than it was and I was pleasantly surprised to find it was really straight forward. I have already implemented one short code for the wp-SwimTeam plugin and expect I’ll have half a dozen more done by the end of the week.
What I implemented for Flickr was pretty simple – it allows the insertion of a Flickr slideshow in a post or page using the Flickr UserId value (which is different than the username) and the Set Id. Here is the snippet of code:
/** * wpst_flickr_slideshow shortcode handler * * Build a short code handler to display a Flickr slide show. * * [wpst_flickr_slideshow userid="id" slideshowid="id" * frameborder="pixels" * width="pixels" height="pixels" * scrolling="yes|no" align="left|center|right" view="yes|y"] * * To show this Flickr slide show: * * http://www.flickr.com/photos/27604893@N04/sets/72157605764227907/show * * Use this shortcode: * * [wpst_flickr_slideshow userid="27604893@N04" slideshowid="72157605764227907"] * * This is the resulting IFRAME tag which is returned to the caller. * * <iframe align=center src=http://www.flickr.com/slideShow/index.gne? * user_id=27604893@N04&set_id=72157605761943480 frameBorder=0 * width=500 scrolling=no height=500></iframe> * * If the 'view="yes"' or 'view="y"' attribute is include, a linl to the * Flickr slideshow will be placed under the IFRAME. * * @param array - shortcode attributes * @return string - HTML code */ function wpst_flickr_slideshow_sc_handler($atts) { $c = container() ;
// Parse the shortcode extract(shortcode_atts(array( 'userid' => '', 'slideshowid' => '', 'frameborder' => 'default 0', 'width' => '500', 'height' => '500', 'scrolling' => 'no', 'align' => 'center', 'view' => 'no', ), $atts)) ;
// If either the userid or slideshowid are missing then // we have a problem and can't do anything meaningful.
if (empty($userid) || empty($slideshowid)) { $c->add(html_br(), html_b("wpst_flickr_slideshow::Invalid Shortcode Syntax"), html_br(2)) ;
return $c->render() ; }
$if_src = "http://www.flickr.com/slideShow/index.gne?" . sprintf("user_id=%s&set_id=%s frameBorder=%s align=%s", $userid, $slideshowid, $frameborder, $align) ;
$c->add(html_iframe($if_src, $width, $height, $scrolling)) ;
if (($view == 'yes') || ($view == 'y')) { $link = "http://www.flickr.com/slideShow/index.gne?" . sprintf("user_id=%s&set_id=%s", $userid, $slideshowid) ;
$c->add(html_br(2), html_a($link, "View this slideshow on Flickr."), html_br(2)) ; }
return $c->render() ; }
The code above makes use of the phpHtmlLib to generate HTML code but the general intent should be pretty obvious.