How to Create Your Own WordPress Shortcodes

Share this article

WordPress doesn’t normally allow you to add PHP code to pages or posts. That’s for the best; you don’t want clients to discover the power of the unlink function! However, you can create custom functions which are executed when a shortcode is encountered within the post text.

Simple shortcodes

Shortcode functions can be added to plugin code or your theme’s functions.php file. If it’s the latter, I’d recommend creating a separate shortcodes.php file, then adding include('shortcodes.php'); to functions.php. Here’s a basic “Hello World” example:

function HelloWorldShortcode() {
	return '<p>Hello World!</p>';
}
add_shortcode('helloworld', 'HelloWorldShortcode');
Enter [helloworld] somewhere within a page or post to output the result of the HelloWorldShortcode() function.

Parameterized shortcodes

The following shortcode function generates a page hierarchy sitemap. Three optional parameters can be passed: a title, the ID of the resulting ul list, and a depth value indicating the number of page navigation levels.

function GenerateSitemap($params = array()) {

	// default parameters
	extract(shortcode_atts(array(
		'title' => 'Site map',
		'id' => 'sitemap',
	    'depth' => 2
	), $params));

	// create sitemap
	$sitemap = wp_list_pages("title_li=&depth=$depth&sort_column=menu_order&echo=0");
	if ($sitemap != '') {
		$sitemap =
			($title == '' ? '' : "<h2>$title</h2>") .
			'<ul' . ($id == '' ? '' : " id="$id"") . ">$sitemap</ul>";
	}

	return $sitemap;
}
add_shortcode('sitemap', 'GenerateSitemap');
A custom sitemap can be added to any page using a shortcode such as [sitemap id='deepmap',depth=5].

BB code shortcode

The final way to add shortcodes uses [bbcode]BB code syntax[/bbcode]:

function StyleText($params, $content = null) {

	// default parameters
	extract(shortcode_atts(array(
		'style' => ''
	), $params));

  return
	'<span' .
	($style == '' ? '' : " style="$style"") .
	">$content</span>";
}
add_shortcode('format','StyleText');
This function allows the author to embed CSS styles within their article, e.g. [format style="font-size:1.5em;color:#f00;">Important![/format]. Perhaps that’s not such a great idea!… Have you seen any interesting uses for shortcodes within WordPress projects?

Frequently Asked Questions (FAQs) about WordPress Shortcodes

What are the benefits of using WordPress shortcodes?

WordPress shortcodes offer a simple way to add functionality or embed content into your posts or pages. They can be used to insert forms, sliders, galleries, and other complex features without having to write complex code. This makes them a powerful tool for non-developers who want to customize their WordPress site. Shortcodes can also be reused across multiple posts or pages, saving you time and effort.

How can I create a custom shortcode in WordPress?

To create a custom shortcode in WordPress, you need to add a function to your theme’s functions.php file. This function should define what the shortcode does when it’s used in a post or page. Once the function is defined, you can use the add_shortcode() function to register it with WordPress. The add_shortcode() function takes two parameters: the shortcode tag and the name of the function that defines the shortcode.

Can I use shortcodes in WordPress widgets?

Yes, you can use shortcodes in WordPress widgets. However, by default, WordPress text widgets do not process shortcodes. To enable this functionality, you need to add a small snippet of code to your theme’s functions.php file: add_filter(‘widget_text’, ‘do_shortcode’); This line tells WordPress to process shortcodes in text widgets.

How can I add parameters to a WordPress shortcode?

Parameters can be added to a WordPress shortcode to make it more flexible and customizable. These parameters are defined in the function that creates the shortcode. When the shortcode is used, the parameters can be included in the shortcode tag, like this: [my_shortcode parameter=”value”]. The function then uses these parameter values when generating the output.

Can I nest WordPress shortcodes?

Yes, WordPress shortcodes can be nested, meaning you can use one shortcode inside another. However, not all shortcodes are designed to be used this way. Whether a shortcode can be nested depends on how it’s been coded. If a shortcode is not designed to be nested, using it inside another shortcode may cause unexpected results.

Why isn’t my WordPress shortcode working?

If your WordPress shortcode isn’t working, there could be several reasons. The shortcode might not be registered correctly, or there might be a typo in the shortcode tag. The function that defines the shortcode might have an error, or the shortcode might be used in a context where it’s not allowed. Check the shortcode’s code and how it’s used to troubleshoot the problem.

Can I use WordPress shortcodes in my theme files?

Yes, you can use WordPress shortcodes in your theme files. To do this, you need to use the do_shortcode() function, like this: echo do_shortcode(‘[my_shortcode]’); This tells WordPress to process the shortcode and output its result.

How can I disable a WordPress shortcode?

To disable a WordPress shortcode, you can use the remove_shortcode() function. This function takes one parameter: the shortcode tag. Once a shortcode is removed, it will no longer be processed by WordPress.

Can I create a WordPress shortcode without coding?

Yes, there are several plugins available that allow you to create custom WordPress shortcodes without having to write any code. These plugins provide a user-friendly interface where you can define your shortcode and its output.

How can I find out what shortcodes are available on my WordPress site?

There isn’t a built-in way to list all available shortcodes in WordPress. However, there are plugins available that can do this. Alternatively, you can check the code of your active theme and plugins, as this is where most shortcodes are defined.

Craig BucklerCraig Buckler
View Author

Craig is a freelance UK web consultant who built his first page for IE2.0 in 1995. Since that time he's been advocating standards, accessibility, and best-practice HTML5 techniques. He's created enterprise specifications, websites and online applications for companies and organisations including the UK Parliament, the European Parliament, the Department of Energy & Climate Change, Microsoft, and more. He's written more than 1,000 articles for SitePoint and you can find him @craigbuckler.

PHPWordPress
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week