21 Little-Known Ways to Use Expiring Posts in WordPress

You may already know that WordPress lets you schedule posts to publish at a later date, but did you know that you can also schedule posts to automatically unpublish after a set time period?

In a previous article, we looked at the best post scheduling plugins for WordPress. Depending on the nature of your content, however, you may also want posts to automatically unpublish after having served their purpose.

In this article, we look at practical ways to use expiring posts in WordPress and plugins that will help you automate this.

We’ll cover the following areas:

21 Ways to Use Expiring Posts

Here are 21 ways to improve your content and marketing strategy using expiring posts in WordPress:

1. Time-Sensitive Promotions

If you run time-limited sales announcements, promotions, offers, or contests on your website, scheduling expiring posts lets you automatically remove or update those posts once the promotional period has ended.

Scheduling posts to automatically expire at the end of a promotional campaign ensures that visitors and customers are not presented with outdated offers or information, preventing confusion and avoiding disappointment, and helps to maintain your brand’s credibility.

For example, let’s say you have a retail store or an eCommerce website and are planning to run a week-long flash sale on selected items. You could create a series of posts promoting different products and schedule them to automatically expire at the end of the sale period, ensuring that customers only see your active promotions.

2. Seasonal Updates

Scheduling expiring posts can be really useful if your business has seasonal products, services, or events.

Automatically expiring posts that contain seasonal content, such as holiday greetings, seasonal sales, or event announcements (e.g. festivals, growers markets, etc.) helps to keep your website’s content aligned with the current season and relevant throughout the year, and avoids showcasing outdated products or information.

This is not only useful for businesses that offer seasonal products or services, such as gardening supplies or holiday-specific decorations, but also seasonal offers or services.

For example, if you have a holiday-specific campaign, you can schedule the corresponding posts to expire once the holiday is over, saving you the effort of manually having to remove or update content every season.

Or, let’s say your client runs a travel agency and wants to showcase different holiday destinations throughout the year (or promote destinations that match discounted airfares from different airlines). They could create posts highlighting specific locations and set them to automatically expire once the corresponding season ends, keeping their website content aligned with the current season.

3. Event Management

Setting expiration dates for event-related posts ensures that outdated event details are automatically removed, maintaining accurate and up-to-date information for attendees.

For example, if your company organizes events, you can schedule posts to expire after the event has taken place. This helps manage event-specific content, such as registration details, agenda updates, or speaker information, and ensures that your website stays relevant before and after the event.

Similarly, if your business organizes conferences, you could create posts promoting each session and speaker and then schedule these to expire after the session has taken place, ensuring that outdated session details are automatically removed.

4. Limited-Time Offers

Promoting exclusive deals or discounts by scheduling posts to expire when the offer period ends creates a sense of urgency for visitors and encourages customers to make timely purchases.

This is ideal for online retailers planning to launch a one-day or weekend sale with posts featuring discounted products.

By scheduling posts to automatically publish when the event kicks off and then setting the posts to expire at the end of the sale, they would not only create a sense of urgency but automate the entire process so they wouldn’t even have to monitor it (think of all those limited-time sales that end at midnight…you could be sleeping and still be making money!)

5. News and Updates

When you have important announcements or releases that need to be shared at a specific time, such as product launches, press releases, or scheduled events, scheduling expiring posts ensures that the information becomes available and expires automatically according to your desired schedule.

Scheduling your news articles, press releases, or industry updates posts to automatically expire when the information loses its relevance or becomes outdated after a certain periodĀ helps to keep your website current, maintains a current and accurate representation of the news landscape, and ensures that readers are always presented with the latest news stories.

6. Product Launches

Scheduling posts to expire after a product launch prevents outdated information about previous releases from cluttering your website.

If you are a technology company planning to release a new version of its software, foir example, you could create a series of posts providing information and updates about the upcoming release, then schedule these to expire shortly after the launch to prevent users from accessing outdated software details.

7. Temporary Notices or Alerts

Displaying time-sensitive notices or alerts, such as maintenance notifications or temporary closures, that automatically expire once the issue or event has passed, ensures that visitors no longer see the closure notice.

For example, a small business could display a notice on its website about a temporary closure due to personal reasons (e.g. owners travelling overseas or a death of a key business team member), and schedule the post to expire once the business reopens.

8. Membership or Subscription Expiration

Automatically expiring posts that are accessible only to members or subscribers after their membership or subscription period ends, encourages them to renew or upgrade.

A good example of this is where a membership-based website grants access to premium content for a specific subscription period and sets users’ access to posts and resources to automatically expire at the end of their subscription.

9. Course or Lesson Availability

Controlling access to course or lesson content by scheduling posts to expire based on the duration of the course or availability of the material encourages students to progress through the course within a designated timeframe.

For example, an online learning platform could provide access to course materials for a limited duration with each lesson post scheduled to expire after a certain number of days.

10. Contest or Giveaway End Dates

Setting posts to expire when a contest or giveaway ends ensures that the information remains accurate and helps to avoid confusion for participants.

A practical use of this could be where a social media influencer runs a giveaway and promotes it through posts on their website. The posts are then scheduled to expire at the end of the giveaway, ensuring that participants can no longer enter after the specified deadline.

11. Archiving Outdated Content

Automatically expiring and archiving posts that are no longer relevant or useful keeps your website clutter-free and ensures a better user experience.

For example, suppose your company blog features posts about past product releases. As new products are launched, the corresponding posts are then scheduled to expire and automatically move to an archive section, keeping the main blog focused on current offerings.

12. Regulatory Compliance

If you need to comply with specific regulations regarding the removal or expiration of certain types of content, scheduling posts to expire can help you meet those requirements.

An example of where setting posts to expire once a required duration has passed to ensure compliance with regulations would be where a financial-related institution publishes posts with legal disclaimers that must be displayed for a specific time period.

13. Legal Compliance

Similar to the above, you can automatically expire posts that contain time-limited legal disclaimers, privacy policies, terms of service, or cookie notices to ensure compliance with changing regulations.

For example, let’s say that an online service provider includes a cookie notice on their website. The post containing the notice can be scheduled to expire after the required consent duration, ensuring compliance with data privacy regulations.

14. Expiring Downloads or Resources

You can also schedule posts to expire when downloadable files, resources, or documents are no longer available or have been updated.

Scheduling posts related to older versions to expire once new updates are released ensures that users access only the most recent and relevant resources and prevents them from accessing outdated information.

15. Scheduled Content Updates

Plan ahead by scheduling posts to expire and automatically trigger updates or new content, ensuring a consistent publishing schedule and reducing manual intervention.

So, if you run a magazine-style website publishing articles on a weekly basis, you could schedule posts to automatically expire at the time of each new publication, allowing for seamless content updates without manual intervention.

16. A/B Testing

Using expiring posts to test different versions of content or design elements by setting expiration dates lets you compare performance and make data-driven decisions.

For example, suppose you run an e-commerce website and want to test two different versions of a product description. You could create two posts, each featuring a different description, and schedule them to expire after a set period. You can then analyze the metrics and determine which version performs better.

17. Content Rotation

Automatically cycling through a set of posts by scheduling them to expire and publishing new content allows you to create a dynamic and ever-changing website experience.

Suppose an art gallery website wants to showcase different artists. They could schedule posts featuring different artists’ works to automatically expire and publish new posts showcasing other artists, providing a constantly changing selection for visitors.

18. User Engagement

Encouraging regular visits to your website by regularly expiring and replacing content helps to entice users to return for fresh information and increased engagement.

An example of this would be where a lifestyle blog regularly features “Tip of the Week” posts. Each post is scheduled to automatically expire after a week, encouraging readers to return for fresh tips.

19. Content Freshness

By scheduling non-evergreen posts to expire, you ensure that your website or blog remains up-to-date with fresh content. This is particularly important if you publish time-sensitive information, such as news, promotions, or event announcements on a regular basis.

Once a post expires, it can automatically be removed or replaced with new content, keeping your website content fresh and relevant.

20. Content Cleanup

Schedule posts to expire and be removed from your website’s public view to maintain a clean and organized content repository.

For example, suppose your blog includes guest posts or paid posts that are only relevant for a limited time. You can schedule guest posts to expire and be removed from your website after the agreed-upon period, keeping your content repository well maintained, clean, and focused.

21. Editorial Workflow

Scheduling expiring posts allows you to plan your content publishing in advance. This can help streamline your content creation process and manage your editorial calendar more effectively.

By pre-scheduling expiration dates, you can focus on creating new content rather than constantly monitoring and manually updating old posts.

This is useful for businesses with news-like websites that follow an editorial calendar. They can schedule posts to expire according to the planned publication schedule, ensuring a steady flow of new content while seamlessly removing outdated articles from the website.

Expiring Offer Post Example
Why stay up all night to unpublish posts when you can set these to automatically expire?

Expiring Post Plugins for WordPress

Here are some post expiration plugins for WordPress you can use to publish a post for a limited time and have your posts be automatically unpublished after the period has expired:

PublishPress Future

PublishPress Future
PublishPress Future lets you automatically unpublish posts in WordPress.

PublishPress Future (formerly Post Expirator) is a simple and easy-to-use plugin that not only lets you automatically unpublish posts, pages, and other content types in WordPress, but also delete your post, change its status, update the post categories, or make other changes.

With PublishPress Future installed, you can:

  • Choose expiry dates for content in any post type.
  • Select expiry dates in the right sidebar when editing posts.
  • Modify, remove or completely delete content when the expiry date arrives.
  • Modify expiry dates using ā€œQuick Editā€ and ā€œBulk Editā€.
  • Receive email notifications when your content expires.
  • Show expiry dates in your content, automatically or with shortcodes.

After installing and activating the plugin, you will see the plugin’s editor block (if using the Block Editor) or settings panel (Classic editor) when creating or editing a post, giving youĀ flexibility and control over when your content will expire.

Simply enter the date and time that you want your post to expire using the intuitive interface…

PublishPress Future Block
Use the plugin’s editor block to set your post’s expiry date and time.

And choose what should happen to the post when it expires by selecting an option from the “Action To Run” section…

PublishPress Future block - Actions menu
Choose what happens to your post after it expires.

You have various options for future actions on expired posts.

For example, you can:

  • Change the status to Draft, Private, or Trash.
  • Delete the post.
  • Keep all existing categories, and add new categories.
  • Remove all existing categories, and add new categories.
  • Keep all existing categories, except for those specified in this change.
  • Enable the ā€œStick to the top of the blogā€ option.
  • Disable the ā€œStick to the top of the blogā€ option.
  • Move the post to a custom status (Pro version)

PublishPress Future gives you complete control of scheduling and managing post expirations via its extensive settings panel. A Pro version of the plugin is available offering additional features and support.

PublishPress Future Settings panel
The plugin puts you in complete control of your post expiration’s settings.

The PublishPress Future plugin includes the following additional features and functionalities:

Quick and Bulk Edit

Use the convenience of the plugin’s “Quick Edit” and “Bulk Edit” options to make changes to expiry dates. and manage a large number of posts.

PublishPress Future - Quick Edit feature
Set posts to expire using the plugin’s convenient Quick Edit and Bulk Edit options.

Email Notifications

Receive notifications when your posts are due to expire so you can stay informed about your content’s expiry and never miss a critical update.

Display Expiry Dates in Your Content

PublishPress Future allows you to automatically show expiry or action dates within your articles. This feature adds a date stamp at the bottom of your post.

Post Expiry Status
Display the post expiry status to provide transparency to your audience.

You can also use customizable shortcodes to display the expiration date inside your posts, tailoring the format to meet your specific needs.

Expiry Defaults for Post Types

The plugin not only lets you customize default expiry options for each post type within your WordPress site, but you can also configure default expiry settings for all of your content.

PublishPress Future expiry options
Automate your content scheduling even further by configuring default post expiry options.

Advanced Features & Detailed Logs

The Pro version of the plugin offers additional functionalities, such as moving posts to a custom status upon expiration and keeps a comprehensive log of all changes made to your posts.

Seamless Cron Job Integration

WP-CRON is a built-in feature of WordPress used to schedule recurring tasks, such as publishing scheduled posts or processing queued tasks in plugins.

PublishPress Future uses custom cron jobs to execute expiration events efficiently, reducing server overhead for busy websites. To fully leverage the plugin’s capabilities, make sure that WP-CRON is properly set up and functional on your web host.

More details: PublishPress Future

Note:Ā When using plugins that require WP-CRON, it’s essential to monitor the performance and resource usage of your site, as WP-CRON can consume significant resources when running heavy or frequent tasks.

If you notice performance issues, you may need to optimize the plugin settings, offload tasks to external services, or use a real server-side cron job to improve efficiency and prevent performance degradation on your hosting account.

If your sites run on WPMU DEV hosting,Ā  rest assured that any WordPress plugins that require WP-CRON will run just fine.Learn more about our hosting

For the best experience running plugins that require WP-CRON functionality, consult the WPMU DEV support team to ensure your website is running optimally on your selected hosting plan.

Auto Post Expiration

Auto Post Expiration
Manage post lifespan in WordPress with the Auto Post Expiration plugin.

Auto Post Expiration is another plugin you can use to easily set expiration dates for your posts in WordPress.

With just a few clicks, you can schedule posts to automatically change to “draft” status, ensuring they are no longer visible on the front end of your site.

Key features of this plugin include:

Set Post Expiration Date and Time

The plugin provides an intuitive feature that lets you easily select the desired date and time for your posts to expire and transition to the “draft” status.

Admin Column Display

Auto Post Expiration shows the expiration date and post status directly in the admin column, making it easy to stay organized and keep track of when posts are scheduled to expire.

Gutenberg and Classic Editor Support

The plugin seamlessly integrates with the block and classic editors, so you can use your preferred editing interface when creating or editing posts.

The plugin also offers a Pro version that lets you unlock advanced features, such as setting expiration dates for single posts, pages, products, and custom post types, WooCommerce Support (set expiration dates for your WooCommerce products), and email notifications for Admin.

More info: Auto Post Expiration

From Inspired Content To Expired Posts

Hopefully, this article has inspired you to use expired posts. Auto expiring posts can help you streamline your content management processes, control the lifespan of your content, and keep your website current, fresh, and relevant to enhance user experience.

For complete WordPress automation, consider becoming a WPMU DEV member. Our all-in-one WordPress platform is ideal for web developers and agencies and includesĀ robust site management tools and Pro plugins that will automate all aspects of your WordPress sites.

Designing for Long-Form Articles

Designing a beautiful ā€œarticleā€ is wrought with tons of considerations. Unlike, say, a homepage, a long-form article is less about designing an interface than it is designing text in a way that creates a relaxed and comfortable reading experience.

Thatā€™s because articles deal with long-form content which, in turn, tends to be valued by a ā€time on pageā€ interaction with users. We want someone to read a complete narrative. Thereā€™s a natural space between the time someone lands on an article and reads all the words. And hopefully, that space is immersive enough to not only hold a userā€™s, but provoke thoughts, ideas, and, possibly, actions. At least thatā€™s what Iā€™m hoping as I have your attention and you make your way through the very article youā€™re reading.

Thereā€™s a balance. On one hand, we hear that ā€œno one reads the Internet.ā€ On the other, a long-form article demands careful attention. Considering the current value of content marketing and the growing impatience in users, captivating readers for as long as possible should be a key concern. Letā€™s take a look at some best practices and examples of incredible article pages to get a better idea of what makes a visually appealing reading experience for long-form articles (without sacrificing user experience), and how we can replicate the effects.

Quick wins

Let me quickly list out what I think might already be obvious to many of you, but are effective things for content legibility:

  • Increase the font size: We know that 16px is the default and is perfectly fine in many designs, but a larger font size is inviting in that it implies the user is free to lean back and settle in without having to angle forward with the screen in their face to read.
  • Aim for characters per line: Very few people I know like to work harder than they need to, and that goes for reading too. Rather than using the full viewport width, try to narrow things down and balance that with your larger font size to get fewer characters on each line of text. Your sweet spot may vary, though many folks suggest somewhere between 45-75 characters per line to help limit how far the readerā€™s eye has to work to go from left to right. Chris has a bookmarklet to help count characters, but we also have the ch unit in CSS to get predictable results.
  • Bump up the line height: A default line height is going to feel smashed. Itā€™s funny, but more space between lines (up to a point, of course) is less work for eyes, which seems antithetical to the characters-per-line advice where we generally want eyes to travel a shorter distance. A line height between 1.2 and 1.5 seems to be a pretty typical range for long-form content.

If you havenā€™t seen it before, Pierrick Calvez has a great ā€œfive-minuteā€ guide to typography that packs in a bunch of low-hanging fruit like these.

Design for extra breathing room

You may be accustomed to designing ā€œabove the foldā€ where real estate is a prime commodity. Thatā€™s sort of like beach-front property in the web world because itā€™s where weā€™re used to packing in high-value things, like hero banners, calls to action, and anything else to help sell a thing. Above the fold can be a lot like a dense urban downtown with high traffic and high-rise buildings.

Articles are different. They allow you to stretch out a bit. If we want to take the city development analogy a little further, articles have the acreage to lean into a ā€œless is moreā€ sort of design approach. Thatā€™s what makes seemingly small design choices ā€” like type ā€” so important to the overall experience.

Check out the example below. The link underlines have a little more room to breathe (specifically, they appear below the descenders). This is actually something that you can enable sitewide but looks especially nice on article pages since it increases readability. Thatā€™s the sort of subtle design choice that contributes to extra breathing room.

A long-form article on the Taste website.

text-underline-position: under; is the line of CSS that makes this work. Naturally, text-decoration must be set to something other than none (underline in this case), too.

The example above also features text-decoration-thickness, which alters the thickness of underlines (and other line types). You can use this CSS property to match a lineā€™s thickness to a fontā€™s size and/or weight.

Hereā€™s a full example:

a {
  text-decoration: underline;
  text-decoration-thickness: 2px;

  /* or */
  text-decoration: underline 2px;
  text-underline-position: under;
}

But before you reach for the text-decoration shorthand, Å ime Vidas has a few ā€œgotchasā€ when it comes to using it that are worth reviewing.

Leading into the content

Drop caps are stylized letters that can be placed at the beginning of a document or document section. They were once used in Latin texts, but today theyā€™re mostly used for decorative reasons.

Personally, I think that drop caps hinder readability. However, they can be a nice way to ā€œleadā€ a reader into the main content, and they shouldnā€™t introduce any serious accessibility issues as long as youā€™re using the ::first-letter pseudo-element. There are other (older) methods that involve more HTML and CSS as well as the use of ARIA attributes in order for the content to remain accessible.

Using ::first-letter, the CSS would look something like this:

/* select the first letter of the first paragraph */
article > p:first-child::first-letter {
  color: #903;
  float: left;
  font-family: Georgia;
  font-size: 75px;
  line-height: 60px;
  padding-top: 4px;
  padding-right: 8px;
  padding-left: 3px;
}

It sure would be nice if we could use the initial-letter property, but thereā€™s pretty much no support for it at the time Iā€™m writing this. If we had it, all that math for font size and line height would be calculated for us!

CodePen challenged folks to show off their drop-cap-styling skills several years ago and you can see a whole bunch of neat examples from it in this collection.

Skip to main content

Screen readers allow users to skip to the main content as long as it wraps it within a <main> element. However, those who navigate websites by tabbing donā€™t benefit from this. Instead, we must create a “skip to main content” anchor link. This link is customarily hidden but revealed once the user makes their first tab (i.e. show on focus).

It would look something like this:

<!-- anchor -->
<a id="skip-link" href="#main">Skip to main content</a>

<!-- target -->
<main class="main">
  <!-- main content -->
</main>
#skip-link {
  position: absolute; /* remove it from the flow */
  transform: translateX(-100%); /* move it off-screen so that it appears hidden but remains focusable */
}
#skip-link:focus {
  position: unset; /* insert it back into the flow */
  transform: unset; /* move it back onto the screen */
}

.main {
  scroll-margin: 1rem; /* adds breathing room above the scroll target */
}

There are other ways to go about it, of course. Here are a couple of deeper dives on creating skip links.

Seamless visuals

I love the illustrations in this article. Despite how incredible they look, they donā€™t demand too much cognitive attention. They introduce brief moments of delight but also suggest that the article itself has something more important to say. Partly, this comes down to the use of transparency, whereas rectangular images capture more negative space and therefore demand more attention (which is fine if thatā€™s the desired effect and images are crucial to the story).

However, itā€™s important to know that the images arenā€™t actually transparent at all, but instead are non-transparent JPEGs with the same background color as the content. Iā€™m presuming thatā€™s to keep the size of the images smaller compared to PNGs that support transparency.

Inspecting an image element in DevTools showing the JPEG images in the source.

The downside to ā€œfakingā€ a transparent background like this is that it would require additional trickery (and maintenance) to support a dark mode UI if your site happens to offer one. If the illustrations are pretty flat and simple, then SVG might be the way to go instead since itā€™s small, scalable, and capable of blending into whatever background itā€™s on.

But if youā€™re bound to using raster images and would rather work with PNG files for transparency, youā€™ll want to look into using responsive images and the loading="lazy" attribute for faster loading times.

Put the focus on the type and semantics

You may have very little say over how or where someone reads content on the web these days. Whether the user receives it in an RSS feed, gets it delivered by email, sees it copy-and-pasted from a colleague, finds it on a scraped site, or whatnot, your content might look different than you prefer. You could design what you think is the most gorgeous article in all the land and the user still might smash that Reader Mode button to your dismay.

Thatā€™s ok! The discoverability of content is very much as important as the design of it, and many users have their own ways of discovering content and preferences for what makes a good reading experience.

But there are reasons why someone would want a Reader Mode. For one, itā€™s like ā€œnot seeing any CSSā€ at all. By that, I mean Safariā€™s Reader Mode or Brave SpeedReader, which use machine learning to detect articles. Thereā€™s no fetching or executing of CSS, JavaScript, or non-article images, which boosts performance and also blocks ads and tracking.

Fong-form article viewed with Brave's SpeedReader feature.

This sort of ā€œbrute minimalismā€ puts the focus on the content rather than the styles. So, you might actually want to embrace a browserā€™s opinionated reading styles specifically for that purpose.

The way to do that is not by using CSS, but by paying closer attention to your HTML. Reader modes work best with markup that uses simple, semantic, article-related HTML. Youā€™ve got to do more than simply slapping <article> tags around the article to get the most from it.

You might just find that a minimal design that emphasizes legibility over slickness is actually a good strategy to use in your siteā€™s design. Iā€™d strongly suggest reading Robinā€™s post on the ā€œsmallest CSSā€ for a solid reading experience.

Roundup of long-form articles!

Iā€™ve shared a lot of what I think makes for a great reading experience for long-form articles on the web. But seeing is believing and Iā€™ve rounded up a bunch of examples that showcase what weā€™ve covered.


Designing for Long-Form Articles originally published on CSS-Tricks, which is part of the DigitalOcean family. You should get the newsletter.