The CW Corner – Adding Custom Shortcodes to WordPress
I wanted to create a custom HTML code function, so made one that will generate a line feed. I tested it to neaten up the output from my favorite WordPress statistics plugin: WP-Statistics by Verona Labs.
This shortcode gives the ability to add line feeds to WordPress page, post or report outputs to improve their readability. The function can easily be modified to generate any HTML output by doing this:
- rename “newline” in the “add_shortcode” line to whatever you’d like the shortcode to be named
- adjust the HTML code inside the quotes in the “return” line
In this example, we’ll create the line break shortcode.
Creating the Line Break Shortcode
Adding shortcodes in WordPress is easily accomplished by simply inserting the appropriate coding for the shortcode into your child theme’s functions.php file.
Note: Child themes should always be used. Changes made directly to the parent theme’s files are usually overwritten each time the parent theme is updated.
To add the code, first back up your site and then do the following:
- Log into the WordPress Dashboard as an administrator
- Navigate to Appearance > Theme Editor
- Select Theme Functions (functions.php) under Theme Files in the right column
- Add the short function code lines below
/* -- Start of line breaks shortcode --*/ function line_break_shortcode() { return '<br />'; } add_shortcode( 'newline', 'line_break_shortcode' ); /* -- End of line break shortcode --*/
Adding Line Breaks
Once the code has been added to your functions.php file, all you have to do is add the
shortcode in your text to generate a line feed at that point. The beauty of doing this as a shortcode is that it can be inserted in places that do not normally allow you to add them – like in the email output of the WP-Statistics plugin.
Note: When testing your output from the WP-Statistics plugin, there is a convenient feature that allows you to send output every minute to see what you will be sending. As a rule I normally have the report set to send daily.
A Working Example
There were a couple of WP-Statistics report items that were of particular interest to me. One is the last post date. This is handy as a reminder when one should add one or more posts to a site – especially a blog – so the site content doesn’t appear stale (or as an alternative, simply do not show blog post creation dates). Even if you are not displaying the post dates on the site, it is good to know when you last posted something.
An example of the report pattern I used was this (note that in some WordPress themes the “[” and “]” characters in the example below display as repeated – there should only be one “[” opening shortcode character and one “]” closing shortcode character surrounding the shortcode itself when you use it):
WP Statistics report for https://CWCorner.com WordPress site: [newline] _______________________________________________ [newline] [newline] Last post date: [wpstatistics stat=lpd] [newline] Total Site Posts: [wpstatistics stat=postcount] [newline] Total Site Pages: [wpstatistics stat=pagecount] [newline] Total Site Users: [wpstatistics stat=usercount] [newline] Online Users at Report Time: [wpstatistics stat=usersonline] [newline] _______________________________________________ [newline] [newline] Today's Visitors so far: [wpstatistics stat=visitors time=today] [newline] Today's Visits so far: [wpstatistics stat=visits time=today] [newline] Yesterday's Visitors: [wpstatistics stat=visitors time=yesterday] [newline] Yesterday's Visits: [wpstatistics stat=visits time=yesterday] [newline] _______________________________________________ [newline] [newline] Total Visitors: [wpstatistics stat=visitors time=total] [newline] Total Visits: [wpstatistics stat=visits time=total] [newline] _______________________________________________ [newline] [newline] End of WP Statistics Report. [newline]
I used the underline characters to separate various parts of the output for clarity. This report pattern generated a nicer, more readable report that even looked great when viewing it on my cell phone.
While I initially added this function as a way to neaten up the output of the WP-Statistics email report – the function should work just about anyplace in WordPress except in the PHP coding itself.