WordPress Add A Shortcode Example

by on September 4, 2012 · 2 comments· LAST UPDATED November 5, 2012

in

How do I create shortcodes that support attributes under wordpress CMS? How do I add shortcodes to my theme?

Tutorial details
DifficultyEasy (rss)
Root privilegesNo
RequirementsWordpress v2.5+
Estimated completion timeN/A

A shorcode is nothing but a simple set of function for creating macro code for use in post content. You need to add the shortcode to your functions.php file. In this example, you are going to create a shortcode called [foo] that will add a text "This is a test".

functions.php

You need to use functions.php a functions file, which resides in the theme subdirectory. This file acts like a plugin, and if it is present in the theme you are using, it is automatically loaded during WordPress initialization.

Create wordpress function

Edit functions.php, enter:
$ vi functions.php
Create a function called demo and append:

 
//[foo]
function foo_demo( $atts ){
 return "This is a demo.";
}
add_shortcode( 'foo', 'foo_demo' );
 

Save and close the file.

Test it

Edit or create a new post and add the following shortcode (in the post/page content):

[foo]

Save/publish post. Click on preview button to see your shotcode in action.

How do I pass parameter or attribute to shortcode?

The Shortcode API makes it easy to create shortcodes that support parameters like this:

[movie genre="animation" rating="PG"]
[movie genre="comedy" rating="G"]

Add the following to your functions.php:

 
// shortcode [movie]
function show_movie( $atts ){
   $movie_details="";
   // get attibutes and set defaults
        extract(shortcode_atts(array(
                'gener' => 'Sci-Fi',
                'rating' => 'G',
                'date' => 0
       ), $atts));
    // Display info 
    $movie_details = '<div class="quickinfo"><ul>';
    $movie_details .= '<li>Genre: ' .$gener. '</li>';
    $movie_details .= '<li>Rating: ' .$rating. '</li>';
    $movie_details .= '<li>Release date: ' .$date. '</li>';
    $movie_details .= '</ul></div>';
    return $movie_details;
}
//add our shortcode movie
add_shortcode('movie', 'show_movie');
add_action( 'init', 'register_shortcodes');
 

You can now insert it as follows in your post:

[movie genre="Animation" rating="PG" date="2012"]

The output would be:

 
<div class="quickinfo"><ul><li>Genre: Sci-Fi</li><li>Rating: PG</li><li>Release date: 1920</li></ul></div>
 
References:
TwitterFacebookGoogle+PDF versionFound an error/typo on this page? Help us!

{ 2 comments… read them below or add one }

1 Max June 27, 2013 at 1:47 pm

Useful guide! small spelling mistake :

  • Genre: ‘ .$gener. ‘
  • ‘; and ‘gener’ => ‘Sci-Fi’,

    gener => genre

    Reply

    2 Anirudh July 8, 2013 at 4:40 pm

    Hi, I have been trying to find a good shortcode example from the last 48 hours and i wasn’t able to find a example with styling.

    Yes i am thick in coding, but i wasn’t able to stylize my shortcode.

    Thanks buddy !! promote your blog, people need you

    Reply

    Leave a Comment

    Tagged as: , , , , ,

    Previous Faq:

    Next Faq: