There are some excellent plugins available to allow you to make time sensitive posts and pages expire. However, these work for the entire post/page rather than just a section.

Here’s the simple solution – a shortcode that you wrap around some content and allows you to specify a date on which it should expiry and simply not display anymore.

Add the following code to your functions.php file in your theme folder…

add_shortcode('expire','expire_text');
function expire_text($paras="",$content="") {
   extract(shortcode_atts(array('date'=>''),$paras));
   if ( ($date!="")&&(date("Ymd")>$date) ) {$content="";}
   return $content;
}

(The above code has been simplified since the post was originally created)

Now, simply add [expire date="yyyymmdd"][/expire] around any text you wish to expire – change yyyymmdd to a date in that format.

For example…

[expire date="20101231"]It's 2010![/expire]

This will display the message “It’s 2010!” until after 31/12/2010.

This is the quick solution – a much fuller version, with expiry time as well as the ability to get content to appear on a specific date/time, will be released as a plugin soon.

About David Artiss

David is the owner and main author of Artiss.co.uk. By day he's a developer for a well known UK retailer, by night he looks after this site and writes WordPress plugins.

Loading Facebook Comments ...

4 Thoughts on “WordPress – Making Post/Page Content Expire

  1. SEOrocks on October 7, 2010 at 1:26 pm said:

    Hiya

    Many thanks for sharing the above method.

    is there a way to display a message replacing the section that will be removed after the date has expired? for example: This Event is no longer Available – check back later

    Thanks in advance S

    • Yes. As well as making content disappear after a set time, you can also make content appear when you want – so you could use the shortcode to make one section disappear and then use another shortcode to make the next bit of content appear. The instructions gives full detail on how to use both of these methods.

  2. Looks like the ability to show content after a date got removed in simplification. I tweaked and came up with a function to do it:

    add_shortcode('showafterRC','showafter_text2'); function showafter_text2($paras="",$content="") { extract(shortcode_atts(array('date'=>''),$paras)); if ( ($date!="")&&(date("Ymd")<$date) ) {$content="";} return $content; }

    I don’t know a thing about php, but it was pretty obvious what needed to be changed :-)

    • Hi Rob,

      Yes, my original code was only intended to hide content after an expiry date. Your modification does the opposite – content doesn’t appear until the date specified.

      David.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

No Trackbacks.

Post Navigation

Top
%d bloggers like this: