{"id":142431,"date":"2021-06-20T07:49:05","date_gmt":"2021-06-20T07:49:05","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/product-expiry-for-woocommerce\/"},"modified":"2026-04-07T05:52:09","modified_gmt":"2026-04-07T05:52:09","slug":"product-expiry-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/os.wordpress.org\/plugins\/product-expiry-for-woocommerce\/","author":17556873,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"3.1","stable_tag":"3.1","tested":"6.9.4","requires":"3.5","requires_php":"","requires_plugins":null,"header_name":"Product Expiry for WooCommerce","header_author":"WebCodingPlace","header_description":"Provide expiry date for your products and get notified before expire","assets_banners_color":"ceb1fe","last_updated":"2026-04-07 05:52:09","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/","header_author_uri":"https:\/\/webcodingplace.com\/","rating":4.5,"author_block_rating":0,"active_installs":2000,"downloads":22031,"num_ratings":12,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1":{"tag":"1.1","author":"webcodingplace","date":"2022-01-12 18:01:06"},"1.2":{"tag":"1.2","author":"webcodingplace","date":"2022-01-13 17:11:05"},"1.3":{"tag":"1.3","author":"webcodingplace","date":"2022-03-20 04:44:33"},"1.4":{"tag":"1.4","author":"webcodingplace","date":"2022-04-17 05:25:44"},"1.5":{"tag":"1.5","author":"webcodingplace","date":"2022-05-15 12:50:22"},"2.0":{"tag":"2.0","author":"webcodingplace","date":"2022-09-02 15:01:20"},"2.1":{"tag":"2.1","author":"webcodingplace","date":"2022-11-01 14:35:36"},"2.2":{"tag":"2.2","author":"webcodingplace","date":"2022-11-07 07:26:49"},"2.3":{"tag":"2.3","author":"webcodingplace","date":"2023-01-29 17:29:30"},"2.4":{"tag":"2.4","author":"webcodingplace","date":"2023-04-07 10:55:26"},"2.5":{"tag":"2.5","author":"webcodingplace","date":"2023-11-20 03:11:17"},"2.6":{"tag":"2.6","author":"webcodingplace","date":"2024-09-01 07:49:59"},"2.7":{"tag":"2.7","author":"webcodingplace","date":"2025-07-20 11:10:20"},"2.8":{"tag":"2.8","author":"webcodingplace","date":"2025-12-04 03:14:03"},"2.9":{"tag":"2.9","author":"webcodingplace","date":"2026-01-07 06:23:33"},"3.0":{"tag":"3.0","author":"webcodingplace","date":"2026-03-13 09:15:10"},"3.1":{"tag":"3.1","author":"webcodingplace","date":"2026-04-07 05:52:09"}},"upgrade_notice":[],"ratings":{"1":1,"2":0,"3":1,"4":0,"5":10},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3357485,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3357485,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-772x250.jpg":{"filename":"banner-772x250.jpg","revision":3357485,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1","1.2","1.3","1.4","1.5","2.0","2.1","2.2","2.3","2.4","2.5","2.6","2.7","2.8","2.9","3.0","3.1"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":2656804,"resolution":"1","location":"assets","locale":""},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":2656804,"resolution":"2","location":"assets","locale":""},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":2763861,"resolution":"3","location":"assets","locale":""},"screenshot-4.png":{"filename":"screenshot-4.png","revision":2779343,"resolution":"4","location":"assets","locale":""},"screenshot-5.png":{"filename":"screenshot-5.png","revision":2780743,"resolution":"5","location":"assets","locale":""}},"screenshots":{"1":"Provide Expiry Date","2":"Single Product Page","3":"Filter by Expiry Dates","4":"Settings","5":"Expire date in order emails"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[746,200603,5485,200604,286],"plugin_category":[45],"plugin_contributors":[187022],"plugin_business_model":[],"class_list":["post-142431","plugin","type-plugin","status-publish","hentry","plugin_tags-product","plugin_tags-product-expiry","plugin_tags-woo","plugin_tags-woo-notifications","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-webcodingplace","plugin_committers-webcodingplace","plugin_support_reps-juli3t"],"banners":{"banner":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/banner-772x250.jpg?rev=3357485","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/icon-128x128.png?rev=3357485","icon_2x":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/icon-256x256.png?rev=3357485","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-1.jpg?rev=2656804","caption":"Provide Expiry Date"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-2.jpg?rev=2656804","caption":"Single Product Page"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-3.jpg?rev=2763861","caption":"Filter by Expiry Dates"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-4.png?rev=2779343","caption":"Settings"},{"src":"https:\/\/ps.w.org\/product-expiry-for-woocommerce\/assets\/screenshot-5.png?rev=2780743","caption":"Expire date in order emails"}],"raw_content":"<!--section=description-->\n<p><strong>Product Expiry for WooCommerce<\/strong> lets you set an expiry date and time for your products and variations. You can automatically mark them as out of stock, move them to draft, or trigger email notifications when they reach their expiration point.<\/p>\n\n<p>Whether you're managing limited-time offers, perishable goods, or seasonal items, this plugin gives you complete control over product visibility based on expiry logic.<\/p>\n\n<h3>Quick Links<\/h3>\n\n<p><a href=\"https:\/\/kb.webcodingplace.com\/docs\/product-expiry-for-woocommerce\/\">Documentation<\/a>.\n<a href=\"https:\/\/webcodingplace.com\/product-expiry-for-woocommerce\/\">More Details<\/a>.<\/p>\n\n<h3>\ud83d\udd11 Key Features:<\/h3>\n\n<ul>\n<li>Set expiration date &amp; time for any WooCommerce product or variation<\/li>\n<li>Automatically make products <strong>Out of Stock<\/strong> or <strong>Draft<\/strong> on expiry<\/li>\n<li>Receive email <strong>notifications<\/strong> before a product expires<\/li>\n<li><strong>Show or hide<\/strong> the expiry date on product pages (with custom formatting)<\/li>\n<li>Display expiry info on the <strong>Order Details<\/strong> page and in <strong>Order Emails<\/strong><\/li>\n<li>Sort products in the admin panel by expiry date<\/li>\n<li><strong>Quick edit<\/strong> or <strong>bulk update<\/strong> expiry dates from the product list<\/li>\n<li>Customize email recipient for expiry alerts<\/li>\n<\/ul>\n\n<h3>\ud83d\udee0\ufe0f Use Cases:<\/h3>\n\n<ul>\n<li>Automatically hide expired food, cosmetics, or perishable goods<\/li>\n<li>Manage expiring digital products or promotional offers<\/li>\n<li>Keep store content fresh without manual cleanup<\/li>\n<\/ul>\n\n<p>This plugin is lightweight, easy to use, and integrates directly into your WooCommerce workflow \u2014 no extra setup required.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/<\/code> directory or install through the WordPress plugin dashboard.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Edit a product in WooCommerce, and you\u2019ll see a new <strong>\"Product Expiry\"<\/strong> panel.<\/li>\n<li>Set your desired expiry date and choose the action on expiry (e.g., draft or out-of-stock).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"can%20i%20set%20expiry%20dates%20for%20individual%20variations%3F\"><h3>Can I set expiry dates for individual variations?<\/h3><\/dt>\n<dd><p>Yes, the plugin supports setting expiration dates at the variation level.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20a%20product%20expires%3F\"><h3>What happens when a product expires?<\/h3><\/dt>\n<dd><p>Depending on your settings, it will either be moved to Draft status or marked as Out of Stock automatically.<\/p><\/dd>\n<dt id=\"can%20i%20display%20the%20expiry%20date%20on%20the%20product%20page%3F\"><h3>Can I display the expiry date on the product page?<\/h3><\/dt>\n<dd><p>Yes. You can choose to show or hide the expiry date on the front end and even control where it appears and how it looks.<\/p><\/dd>\n<dt id=\"will%20i%20be%20notified%20when%20a%20product%20expires%3F\"><h3>Will I be notified when a product expires?<\/h3><\/dt>\n<dd><p>Yes, the plugin can send an email notification when a product expires. You can also specify a custom recipient email address.<\/p><\/dd>\n<dt id=\"can%20i%20edit%20expiry%20dates%20in%20bulk%3F\"><h3>Can I edit expiry dates in bulk?<\/h3><\/dt>\n<dd><p>Yes. You can bulk-edit or quick-edit expiry dates from the product listing page in your admin dashboard.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.1<\/h4>\n\n<ul>\n<li>Feature Added: Enhanced Hook Selection UI! You can now choose display positions for Single Product and Archive pages via a user-friendly dropdown<\/li>\n<li>Feature Added: Added support for \"Custom Hooks.\" If your theme uses non-standard hooks, you can still enter them manually.<\/li>\n<li>Feature Added: Modernized Admin experience with SweetAlert2 integration for smoother, real-time settings saving.<\/li>\n<li>Feature Added: Optimized AJAX saving logic to provide better feedback when \"no changes\" are detected.<\/li>\n<li>Bug Fixed: Email notification is not working when no action is selected.<\/li>\n<\/ul>\n\n<h4>3.0<\/h4>\n\n<ul>\n<li>Feature Added: New UI with more control<\/li>\n<li>Feature Added: Email Subject and Markup options<\/li>\n<li>Bug Fixed: Expiry date for variations does not show in order summary<\/li>\n<\/ul>\n\n<h4>2.9<\/h4>\n\n<ul>\n<li>Bug Fixed: WPML breaks %date% placeholder in emails and frontend<\/li>\n<\/ul>\n\n<h4>2.8<\/h4>\n\n<ul>\n<li>Bug Fixed: Date is not respecting the site's timezone settings. (credits: @akukameda)<\/li>\n<\/ul>\n\n<h4>2.7<\/h4>\n\n<ul>\n<li>Feature Added: Sorting by expiry date<\/li>\n<li>Feature Added: 6 Months filter<\/li>\n<li>Feature Added: Filter variable products<\/li>\n<li>Feature Added: Variable products expiry date in admin column<\/li>\n<li>Feature Added: Support with WooCommerce 9.8.5<\/li>\n<li>Bug Fixed: Uncaught Error: Call to a member function get_meta()<\/li>\n<li>Bug Fixed: Date is not displaying for variable products<\/li>\n<\/ul>\n\n<h4>2.6<\/h4>\n\n<ul>\n<li>Vulnerability Fixed: issue identified by Wordfence team is fixed<\/li>\n<\/ul>\n\n<h4>2.5<\/h4>\n\n<ul>\n<li>Bug Fixed: Cron event does not get cleared when date is deleted<\/li>\n<\/ul>\n\n<h4>2.4<\/h4>\n\n<ul>\n<li>Feature Added: Provide custom expiry note to display<\/li>\n<li>Feature Added: Shortcode added [expiry_date before=\"\" after=\"\"]<\/li>\n<li>Bug Fixed: Quick edit date is always empty<\/li>\n<\/ul>\n\n<h4>2.3<\/h4>\n\n<ul>\n<li>Feature Added: Variations support<\/li>\n<li>Feature Added: WPML Support<\/li>\n<li>Feature Added: Make products out of stock<\/li>\n<li>Feature Added: Quick settings button<\/li>\n<\/ul>\n\n<h4>2.2<\/h4>\n\n<ul>\n<li>Feature Added: Product becomes draft when the date pass (+1 Day)<\/li>\n<li>Feature Added: Option to display date in order details (Admin + Front)<\/li>\n<\/ul>\n\n<h4>2.1<\/h4>\n\n<ul>\n<li>Feature Added: Option to display expiry date in order emails<\/li>\n<li>Bug Fixed: Display on frontend not saving settings<\/li>\n<\/ul>\n\n<h4>2.0<\/h4>\n\n<ul>\n<li>Feature Added: Admin filtering by expiry status<\/li>\n<li>Feature Added: Custom text markup<\/li>\n<li>Feature Added: Custom date format<\/li>\n<li>Feature Added: Email notification on expiry<\/li>\n<\/ul>\n\n<h4>1.5<\/h4>\n\n<ul>\n<li>Feature Added: Russian Translation Added<\/li>\n<\/ul>\n\n<h4>1.4<\/h4>\n\n<ul>\n<li>Feature Added: Bulk edit expiration date<\/li>\n<li>Feature Added: Admin column added to display dates<\/li>\n<li>Notice: POT updated<\/li>\n<\/ul>\n\n<h4>1.3<\/h4>\n\n<ul>\n<li>Bug Fixed: Warning Use of undefined constant<\/li>\n<\/ul>\n\n<h4>1.2<\/h4>\n\n<ul>\n<li>Ability to enable\/disable display of expire date on the product page<\/li>\n<li>POT file updated<\/li>\n<\/ul>\n\n<h4>1.1<\/h4>\n\n<ul>\n<li>Expiry date added in the single product page<\/li>\n<\/ul>\n\n<h4>1.0<\/h4>\n\n<ul>\n<li>Initial Release<\/li>\n<\/ul>","raw_excerpt":"Set expiration dates for WooCommerce products and variations. Automatically change their status or send notifications when they expire.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/142431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=142431"}],"author":[{"embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/webcodingplace"}],"wp:attachment":[{"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=142431"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=142431"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=142431"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=142431"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=142431"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/os.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=142431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}