Show/Hide Content at Set Time

Description

Like this plugin? Consider leaving a quick review or writing about how you’ve used it on your site – send me a link to that write up if you do.

This plugin is maintained on GitHub, so feel free to use the repository for reporting issues, submitting feature requests and submitting pull requests.

This plugin provides shortcodes allowing you to display content or hide content at given dates and times. You can also combine the two to show some content at a given time, and then hide it at another time.

There’s also a separate shortcode if you want to repeat a schedule for showing and hiding content – for example to only show information about a radio show while it’s on air.

Usage – single use

To show or hide content at one point in time, you can use the [time-restrict] shortcode. For example:

[time-restrict off="2015-01-01"]Please enter our competition[/time-restrict]
[time-restrict on="2015-01-01"]Sorry, this competition has closed[/time-restrict]

If you do not enter a time with the date, it will default to 00:00:00, so in the above example, the first message will show up until 2015-01-01 00:00:00 (i.e. until the first second of 2015) and the second message will show up from 2015-01-01 00:00:00 (i.e. from the first second of 2015)

You can use any date or time string supported by PHP, such as:

[time-restrict off="September 10th, 2014"]Will display until 09/10/2014[/time-restrict]
[time-restrict off="2014-09-10"]Will display until 09/10/2014[/time-restrict]
[time-restrict off="10-Septmber 2014"]Will display until 09/10/2014[/time-restrict]
[time-restrict on="2014/09/10 18:00:00"]Will show after 09/10/2014 at 6pm[/time-restrict]

You can also combine starting and ending dates for the same piece of content. So if you want some content to appear between January 1st and January 10th, you could do the following:

[time-restrict on="2015-01-01" off="2015-01-11"]
This is a limited time offer
[/time-restrict]

Usage – repeating schedule

To show and hide content on a recurring schedule, you can use the [time-restrict-repeat] shortcode. Your options are a daily, weekly, monthly or annual schedule.

A daily schedule takes the following form:

[time-restrict-repeat type="daily" ontime="09:00:00" offtime="17:00:00"]
Working 9 to 5
[/time-restrict-repeat]

Note that you can also cross over midnight, so to only show something from 10PM to 5AM, you can use:

[time-restrict-repeat type="daily" ontime="22:00:00" offtime="05:00:00"]
For the night owls
[/time-restrict-repeat]

A weekly schedule takes the following form:

[time-restrict-repeat type="weekly" onday="Monday" offday="Friday"]
The work week
[/time-restrict-repeat]

You can also specify start and stop times if you want (it will assume starting at 00:00:00 and ending at 23:59:59 if these are left out, like above):

[time-restrict-repeat type="weekly" onday="Friday" offday="Monday" ontime="17:00:00" offtime="08:00:00"]
It's the weekend baby!
[/time-restrict-repeat]

A monthly schedule takes the following form:

[time-restrict-repeat type="monthly" ondate="01" offdate="07"]
The first week of the month
[/time-restrict-repeat]

You can both cross over the end of the month, and apply times to your start and end dates, e.g.

[time-restrict-repeat type="monthly" ondate="25" offdate="05" ontime="17:00:00" offtime="08:00:00"]
We are exceptionally busy at the end of each billing cycle. Please bear with us!
[/time-restrict-repeat]

And lastly, an annual schedule takes the following form:

[time-restrict-repeat type="annually" onmonth="June" offmonth="August" ondate="01" offdate="31"]
I'm currently in the mountains enjoying the summer!
[/time-restrict-repeat]

You can cross over the end of the month or even the end of the year, and apply times to your start and end dates, e.g.

[time-restrict-repeat type="annually" onmonth="December" ondate="24" offmonth="January" offdate="05" ontime="17:00:00" offtime="08:00:00"]
Our employees are currently enjoying time with their families for Christmas. We'll be back after the New Year.
[/time-restrict-repeat]

If you’re feeling creative, you can even nest shortcodes to account for multiple concurrent conditions. Since you cannot nest shortcodes with the same name, you need to add -2 or -3 to time-restrict-repeat in your shortcode (e.g. [time-restrict-repeat-2]).

For example, showing a message during business hours only on Monday to Friday:

[time-restrict-repeat type="daily" ontime="08:00:00" offtime="17:00:00"]
[time-restrict-repeat-2 type="weekly" onday="Monday" offday="Friday"]
Our store is currently open
[/time-restrict-repeat-2]
[/time-restrict-repeat]

You can also define a message which should appear if your content is not showing by using the else attribute @since 2.5. For example, you could invite people to visit your store during opening hours and ask them come back soon otherwise, like this:

[time-restrict-repeat type="daily" ontime="08:00:00" offtime="17:00:00" else="We're currently closed. Come back and see us when we're open."]
[time-restrict-repeat-2 type="weekly" onday="Monday" offday="Friday" else="We're currently closed. Come back and see us when we're open."]
Our store is currently open
[/time-restrict-repeat-2]
[/time-restrict-repeat]

Note that with nested shortcodes, you need to add the else attribute to each shortcode.

Things to bear in mind

I also run Do It With WordPress, which has an array of tutorials for managing, modifying and maintaining your WordPress sites, as well as The WP Butler, a service for keeping your site maintained, backed up, updated and secure.

Installation

  1. Upload shortcodes-to-show-or-hide-content.zip to the /wp-content/plugins/ directory
  2. Activate the plugin through the ‘Plugins’ menu in WordPress
  3. Use shortcodes around your text

FAQ

How do I get the plugin to do “this”?

Check the Description tab for several examples showing what the plugin can do.

If you’re still stuck, the best thing to do is to submit an issue on GitHub. If you don’t have a GitHub account, then get in touch with me and I’d be glad to help you out.

Can you add a feature to this widget?

Probably. The best thing to do is to create a new feature request on GitHub. If you don’t have a GitHub account, then tell me what this widget should do that it doesn’t currently.

Something’s not right. What should I do?

The best thing to do is to submit an issue on GitHub. If you don’t have a GitHub account, then get in touch with me and I’ll see about getting it fixed.

Reviews

Doesn’t always work

Every week we publish events at a specific time across several pages. This tool has been flakey. While it works part of the time, other times it does not work.

Love it!

Finding this plugin made my day, so naturally I didn’t expect it to actually work. But it did work – first time out, thanks to the very clear instructions (something many other plugin authors could learn from this one!)

A very useful plugin. HIGHLY RECOMMENDED.

Awesome! Easy! Works Great!

Very powerful, easy to use, and flexible plugin for timing content anywhere a shortcode can be used. Excellent documentation and examples on the plugin’s WP page.

Plugin author appears to be the sort of developer who will keep this plugin updated and working for years to come.

Nice to see dates of version releases in the changelog, too. 🙂

Excellent plugin!

Very useful for setting timed rules for content on pages and posts. Delivers exactely as promised!

Read all 24 reviews

Contributors & Developers

“Show/Hide Content at Set Time” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

2.5

Release date: December 14, 2016

  • Addition of else parameter.
  • Retire old (pre v2.0) shortcodes.

2.4

Release date: May 23, 2016

  • Coding standards, logic and performance improvements.

2.3.1

Release date: August 31, 2015

  • Corrected an error in the weekly logic (props Jérôme)

2.3

Release date: December 5, 2014

  • Introduced recurring annual schedule (previously only monthly/weekly/daily). Just use type=”annually” in your shortcodes.
  • Code improvements.

2.2

Release date: October 9, 2014

  • Fixed inability to nest shortcodes by introducing distinct copies of the time-restrict-repeat shortcode ([time-restrict-repeat-2] and [time-restrict-repeat-3])

2.1.1

Release date: October 2, 2014

  • Fixed error where content would show all the time when either onday and offday matched, or offdate and ondate matched.

2.1

Release date: August 30, 2014

  • Revised code to allow for onday and offday being the same. Same for ondate and offdate.
  • Changed attributes for [time-restrict] shortcode to be more in line with the rest of the plugin. Now using ‘on’ and ‘off’ instead of ‘show’ and ‘hide’, though the show and hide attributes will continue to work.

2.0

Release date: August 22, 2014

  • New combined [time-restrict] shortcode allows for hide and show times for the same piece of content
  • New [time-restrict-repeat] shortcode allows you to show and hide content on a daily, weekly or monthly recurring basis
  • Code improvements
  • Legacy shortcode support
  • Enables nesting shortcodes within new shortcodes
  • Plugin now respects site’s local time, rather than server time