=== LukaCodes Content Expiry Shortcode === Contributors: luka2013 Tags: shortcode, content expiry, content expiration, expire content, scheduled content Requires at least: 6.0 Tested up to: 6.9 Requires PHP: 8.0 Stable tag: 1.1.1 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html We help you show temporary WordPress content until a chosen date and time with the simple [lcexp] shortcode. == Description == We created LukaCodes Content Expiry Shortcode for cases where we want to publish content for a limited period and let it expire automatically without having to come back and edit the page later. With the `[lcexp]` shortcode, we can wrap any temporary content inside a date-based rule. Until the selected date and time, the content is shown normally. Once that time passes, the plugin replaces it with a clear expiry message. This makes the plugin useful for many everyday WordPress tasks, such as: * limited-time offers * temporary announcements * event notices * holiday messages * launch updates * short-term promotional text Instead of removing content manually after a campaign or announcement ends, we can set the expiry date in advance and let the plugin handle it for us. **How we use it** We place the shortcode around the content we want to display temporarily: `[lcexp "30-06-2026 23:59"]This content will stay visible until the selected date and time.[/lcexp]` Before the selected date and time: the content inside the shortcode is displayed normally. After the selected date and time: the content is replaced automatically with the message: `This content is no longer available.` **Accepted date formats** We can use the shortcode with the following formats: * `DD-MM-YYYY HH:MM` * `DD-MM-YYYY` We also support slash-separated dates such as: * `DD/MM/YYYY HH:MM` * `DD/MM/YYYY` **Examples** `[lcexp "30-06-2026 23:59"]This offer ends tonight.[/lcexp]` `[lcexp "25-12-2026"]Holiday message[/lcexp]` `[lcexp "18:30 15-08-2026"]Event reminder[/lcexp]` **What we wanted to keep simple** We designed this plugin to stay lightweight and practical. We did not want to add unnecessary setup screens for something that can be handled directly inside the editor with a shortcode. **Features** * simple shortcode-based usage * automatic content expiry by date and time * works in posts and pages * works in WooCommerce product descriptions and short descriptions * supports nested shortcode content through normal shortcode rendering * uses the WordPress site timezone * lightweight and easy to use * multilingual-ready **Premium** We also offer a Premium version at: https://lukacodes.com/plugins/content-expiry-shortcode/ In the Premium version, we expand the experience with additional tools such as a visual Gutenberg workflow and faster content insertion options. == Third-Party Service == This plugin integrates with Freemius for optional telemetry, upgrade handling, and the deactivation feedback form. Freemius is only connected after the site owner explicitly opts in. If the opt-in is declined, no telemetry is sent. Service provider: Freemius Website: https://freemius.com Terms of service: https://freemius.com/terms/ Privacy policy: https://freemius.com/privacy/ When a site owner opts in, Freemius may collect basic diagnostic and site data such as the website URL, WordPress version, plugin version, PHP version, language, and activation/deactivation events. If the site owner submits the deactivation form, the selected reason and optional feedback are also sent. == Installation == 1. Upload the `lukacodes-content-expiry-shortcode` folder to the `/wp-content/plugins/` directory, or install the plugin through the WordPress Plugins screen. 2. Activate the plugin through the **Plugins** screen in WordPress. 3. Open any post or page where you want to show temporary content. 4. Add the shortcode with your preferred expiry date and time. Example: `[lcexp "30-06-2026 23:59"]Your content here[/lcexp]` == Frequently Asked Questions == = How does the shortcode work? = We place the content we want to show temporarily between the opening and closing shortcode tags. Example: `[lcexp "30-06-2026 23:59"]This content will expire automatically.[/lcexp]` The date inside the shortcode tells the plugin when that content should stop being displayed. = What happens after the expiry date? = After the selected date and time passes, the plugin replaces the content with the message: `This content is no longer available.` = What date format should we use? = We recommend using: `DD-MM-YYYY HH:MM` Example: `[lcexp "30-06-2026 23:59"]Temporary content[/lcexp]` We also support date-only format: `DD-MM-YYYY` and slash-separated dates such as: `DD/MM/YYYY HH:MM` = Which timezone does the plugin use? = We use your WordPress site timezone. You can check or change it from: **Settings > General > Timezone** = Does it work in the Classic Editor and Gutenberg? = Yes. We can use the shortcode in both the Classic Editor and the Block Editor. = Can we use more than one shortcode on the same page? = Yes. We can use multiple `[lcexp]` shortcodes on the same page with different dates and different content. = Does the plugin hide the content completely? = After expiry, the original content is no longer shown. In its place, the plugin displays a clear expiry message so visitors do not see an empty gap. = Does it work with any WordPress theme? = Yes. We built it to work independently of the active theme. == Screenshots == 1. Using the `[lcexp]` shortcode inside the WordPress editor. 2. Example of content shown normally before the expiry date. 3. Example of the expiry message displayed after the selected date and time. == Changelog == = 1.1.1 = * Added Freemius integration for optional opt-in analytics and deactivation feedback. * Updated the Premium purchase link to the main plugin page. = 1.1.0 = * Added WooCommerce integration: the `[lcexp]` shortcode now works inside product descriptions and short descriptions. * Added WooCommerce REST API support: shortcode content is correctly evaluated when product data is fetched via the REST API. = 1.0.0 = * Initial release. * Added the `[lcexp]` shortcode for expiring temporary content by date and time. * Added support for `DD-MM-YYYY HH:MM` and `DD-MM-YYYY` formats. * Added multilingual-ready text strings. == Upgrade Notice == = 1.0.0 = Initial release.