[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fa7yvsynAc6Hu0pgpKpoyiHnvthgVaxEJh_GdSgWqu5A":3},{"slug":4,"name":5,"version":6,"author":7,"author_profile":8,"description":9,"short_description":10,"active_installs":11,"downloaded":12,"rating":13,"num_ratings":14,"last_updated":15,"tested_up_to":16,"requires_at_least":17,"requires_php":18,"tags":19,"homepage":24,"download_link":25,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28,"vulnerabilities":29,"developer":30,"crawl_stats":27,"alternatives":34,"analysis":136,"fingerprints":222},"ninja-auto-post-expire","Auto Post Expire","1.2","ninjatech24","https:\u002F\u002Fprofiles.wordpress.org\u002Fninjatech24\u002F","\u003Cp>This plugin allows you to automatically set an expiration date for your posts, ensuring they are managed efficiently over time.\u003C\u002Fp>\n\u003Cp>When a post reaches its expiration date, it is automatically moved to draft, making it no longer visible on the front end but still available for editing or future publication.\u003C\u002Fp>\n\u003Cp>This feature is ideal for content that is time-sensitive, such as promotions, announcements, or event-related posts, helping you maintain a clean and relevant website without needing to manually manage outdated content.\u003C\u002Fp>\n\u003Cp>You can configure the expiration period to suit your needs, streamlining post lifecycle management.\u003C\u002Fp>\n\u003Ch3>Features\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>\n\u003Cp>Automatic Post Expiration: Set an expiration date for posts, after which they are automatically moved to draft status.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Customizable Expiration Date: Choose a specific date for posts to expire.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Expiration Status Indicator: Clearly see which posts have expiration dates and when they are set to expire.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>Post Type Compatibility: Supports various post types, including blog posts, custom posts, and more.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\n\u003Cp>User-Friendly Interface: Simple and intuitive settings within the WordPress admin panel for easy configuration.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch3>How it works\u003C\u002Fh3>\n\u003Cp>After creating or editing a post, you can set a specific expiration date or by edit posts. This is typically done via a simple calendar picker.\u003C\u002Fp>\n\u003Cp>The plugin automatically monitors all posts with expiration dates, checking the current date against the set expiration.\u003C\u002Fp>\n\u003Cp>When a post reaches its expiration date, the plugin automatically moves it to draft status. This makes the post invisible to users on the front end but still accessible for you in the backend for review, edits, or republishing.\u003C\u002Fp>\n\u003Cp>The plugin works with most post types, including custom post types.\u003C\u002Fp>\n\u003Cp>We’d love to hear your feedback or suggestions for additional features!\u003C\u002Fp>\n\u003Ch3>License\u003C\u002Fh3>\n\u003Cp>This plugin is free software; you can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\u003C\u002Fp>\n","Sets an expiration date for posts, auto moving them to draft after the set period.",800,3158,100,1,"2025-06-20T12:30:00.000Z","6.8.5","5.8","5.2.4",[20,21,22,23],"auto-expire","custom-post-expire","expire","post-expire","","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fninja-auto-post-expire.1.2.zip",0,null,"2026-03-15T15:16:48.613Z",[],{"slug":7,"display_name":7,"profile_url":8,"plugin_count":14,"total_installs":11,"avg_security_score":13,"avg_patch_time_days":31,"trust_score":32,"computed_at":33},30,94,"2026-04-05T19:58:54.419Z",[35,57,75,93,113],{"slug":36,"name":37,"version":38,"author":39,"author_profile":40,"description":41,"short_description":42,"active_installs":43,"downloaded":44,"rating":13,"num_ratings":14,"last_updated":45,"tested_up_to":46,"requires_at_least":47,"requires_php":18,"tags":48,"homepage":54,"download_link":55,"security_score":56,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"ape-auto-popup-expiry","Auto Popup Expiry","2.0","Edoardo Rinaldi","https:\u002F\u002Fprofiles.wordpress.org\u002Fedoardorinaldi\u002F","\u003Cp>Don’t forget to remove the popup!\u003Cbr \u002F>\nThe main feature of APE PopUP is the auto expiration, will be enough to select the publication end date and the popup will be automatically removed.\u003Cbr \u002F>\nYou can choose between Classic Popup and Notification Popup, both allow total customization, let’s see them below:\u003C\u002Fp>\n\u003Cp>Classic PopUp:\u003Cbr \u002F>\n• Automatic deactivate after certain date\u003Cbr \u002F>\n• Customize Width and Height (px \u002F auto)\u003Cbr \u002F>\n• Set Automatic “FadeOut” Timeout\u003Cbr \u002F>\n• Upload or Select image by WP Media\u003Cbr \u002F>\n• Choice the background-color of the Popup\u003Cbr \u002F>\n• Set the border-radius value\u003Cbr \u002F>\n• Insert a custom link (external or internal)\u003Cbr \u002F>\n• Simple Shortcode [Ape] to display the Popup\u003C\u002Fp>\n\u003Cp>Notification PopUp:\u003Cbr \u002F>\n• Customize Content,  Friendly\u003Cbr \u002F>\n• Automatic deactivate after certain date\u003Cbr \u002F>\n• Customize Width and Height (px \u002F auto)\u003Cbr \u002F>\n• Set Automatic “FadeOut” Timeout\u003Cbr \u002F>\n• Choice the background-color\u003Cbr \u002F>\n• Choice the font-color\u003Cbr \u002F>\n• Set the border-radius value\u003Cbr \u002F>\n• Set the indoor margin value\u003Cbr \u002F>\n• Customize position (Top, Left, Right, Bottom)\u003Cbr \u002F>\n• Custom Animation IN\u003Cbr \u002F>\n• Custom Animation OUT\u003Cbr \u002F>\n• Simple Shortcode [Ape] to display the Popup\u003C\u002Fp>\n\u003Ch4>Docs & Support\u003C\u002Fh4>\n\u003Cp>You can find all the documentation on (https:\u002F\u002Fautopopupexpiry.com)\u003C\u002Fp>\n\u003Ch4>Privacy Notices\u003C\u002Fh4>\n\u003Cp>With the default configuration, this plugin, in itself, does not:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>send any data to external servers;\u003C\u002Fli>\n\u003Cli>use cookies.\u003C\u002Fli>\n\u003C\u002Ful>\n","Auto Popup Expiry is a simple Auto Deactive Popup for Wordpress",20,1509,"2019-07-31T06:59:00.000Z","5.2.24","4.6",[49,50,51,52,53],"auto-expire-popup","auto-popup","auto-popup-expiry","popup","popup-automatically-deactivate","https:\u002F\u002Fwww.autopopupexpiry.com\u002F","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fape-auto-popup-expiry.zip",85,{"slug":58,"name":59,"version":60,"author":61,"author_profile":62,"description":63,"short_description":64,"active_installs":43,"downloaded":65,"rating":26,"num_ratings":26,"last_updated":66,"tested_up_to":67,"requires_at_least":68,"requires_php":69,"tags":70,"homepage":24,"download_link":74,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"expirepress","ExpirePress – Automatic Post Scheduler for WordPress","1.0.4","wpsqr","https:\u002F\u002Fprofiles.wordpress.org\u002Fwpsqr\u002F","\u003Cp>ExpirePress is a lightweight yet powerful \u003Cstrong>WordPress post scheduler\u003C\u002Fstrong> designed to automate content management through smart expiration actions. With ExpirePress, you can \u003Cstrong>automatically expire posts\u003C\u002Fstrong> and control exactly what happens to your content at a scheduled date and time.\u003C\u002Fp>\n\u003Cp>Perfect for blogs, news websites, business sites, and eCommerce stores, ExpirePress helps you keep your website clean, relevant, and up to date — without manual intervention.\u003C\u002Fp>\n\u003Cp>You can \u003Cstrong>auto expire posts\u003C\u002Fstrong> and apply content actions such as changing post status, updating titles, modifying categories, or hiding content from search and sitemaps.\u003C\u002Fp>\n\u003Ch3>Key Fatures\u003C\u002Fh3>\n\u003Cp>\u003Cstrong>Flexible ExpirePress Actions\u003C\u002Fstrong>\u003Cbr \u002F>\n– Set post status to \u003Cstrong>Draft\u003C\u002Fstrong>, \u003Cstrong>Trash\u003C\u002Fstrong>, \u003Cstrong>Delete Permanently\u003C\u002Fstrong>, or \u003Cstrong>Private\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Password-protect\u003C\u002Fstrong> or unprotect posts\u003Cbr \u002F>\n– \u003Cstrong>Change post categories\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Update post titles\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Hide posts from XML sitemaps\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Exclude posts from site search results\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Post Scheduling & Automation\u003C\u002Fstrong>\u003Cbr \u002F>\n– Schedule expiration by \u003Cstrong>date and time\u003C\u002Fstrong>\u003Cbr \u002F>\n– Automate content lifecycle management\u003Cbr \u002F>\n– Ideal for temporary, seasonal, or time-limited content\u003C\u002Fp>\n\u003Cp>\u003Cstrong>User-Friendly Interface\u003C\u002Fstrong>\u003Cbr \u002F>\n– Configure expiration settings directly from the \u003Cstrong>post editor\u003C\u002Fstrong>\u003Cbr \u002F>\n– No complex setup or configuration required\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Supports Multiple Post Types\u003C\u002Fstrong>\u003Cbr \u002F>\n– Works with standard posts\u003Cbr \u002F>\n– Fully compatible with \u003Cstrong>custom post types\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Reliable & Compatible\u003C\u002Fstrong>\u003Cbr \u002F>\n– Lightweight and performance-friendly\u003Cbr \u002F>\n– Tested with modern WordPress versions (6.6+)\u003Cbr \u002F>\n– Compatible with Gutenberg and common plugins\u003C\u002Fp>\n\u003Ch3>Customization & Developer Hooks\u003C\u002Fh3>\n\u003Cp>ExpirePress is built with developers in mind and provides \u003Cstrong>custom hooks and filters\u003C\u002Fstrong> for extending functionality.\u003C\u002Fp>\n\u003Cp>You can:\u003Cbr \u002F>\n– \u003Cstrong>Add or remove expiration actions\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Register custom expiration behaviors\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Control how new actions are saved\u003C\u002Fstrong>\u003Cbr \u002F>\n– \u003Cstrong>Modify expiration logic programmatically\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Hooks are available for:\u003Cbr \u002F>\n– Registering new expiration actions\u003Cbr \u002F>\n– Handling data saving when a custom action is added\u003Cbr \u002F>\n– Extending existing expiration workflows\u003C\u002Fp>\n\u003Cp>This makes ExpirePress easy to integrate into custom projects, advanced workflows, or third-party plugins.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Full developer documentation is available at:\u003C\u002Fstrong>\u003Cbr \u002F>\nhttps:\u002F\u002Fwww.wp-sqr.com\u002F\u003C\u002Fp>\n\u003Ch3>Common Use Cases\u003C\u002Fh3>\n\u003Cul>\n\u003Cli>Automatically expire outdated blog posts\u003C\u002Fli>\n\u003Cli>Manage seasonal or promotional content\u003C\u002Fli>\n\u003Cli>Clean up expired announcements or offers\u003C\u002Fli>\n\u003Cli>Control visibility of old content without deleting it\u003C\u002Fli>\n\u003Cli>Automate content workflows in WordPress\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>ExpirePress gives you full control over \u003Cstrong>post scheduling, auto expiration, and content automation\u003C\u002Fstrong> — all in one simple plugin.\u003C\u002Fp>\n\u003Ch3>Troubleshooting\u003C\u002Fh3>\n\u003Col>\n\u003Cli>Ensure the ExpirePress plugin is activated and your WordPress version is at least 5.2.\u003C\u002Fli>\n\u003Cli>Deactivate other plugins to check for conflicts.\u003C\u002Fli>\n\u003C\u002Fol>\n","ExpirePress automatically schedule post expiration and content actions in WordPress using powerful rules.",1306,"2026-01-21T12:47:00.000Z","6.9.4","5.2","7.2",[20,71,72,73],"automation","content-management","post-scheduler","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fexpirepress.1.0.4.zip",{"slug":76,"name":77,"version":78,"author":79,"author_profile":80,"description":81,"short_description":82,"active_installs":26,"downloaded":83,"rating":13,"num_ratings":14,"last_updated":84,"tested_up_to":16,"requires_at_least":85,"requires_php":86,"tags":87,"homepage":24,"download_link":92,"security_score":13,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"ait-easy-post-customization","AIT Easy Post Customization","2.0.1","kamranchannar","https:\u002F\u002Fprofiles.wordpress.org\u002Fkamranchannar\u002F","\u003Cp>AIT Easy Post Customization is a powerful yet easy-to-use plugin designed to give users control over the lifespan of their posts and custom post types by allowing you to set an expiry date. If you’re managing time-sensitive content, like event announcements, special promotions, or limited-time offers, this plugin automates the process of unpublishing or archiving content, making content management hassle-free.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>What problem does this plugin solve?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>Manually tracking and updating expired content can be tedious and prone to errors, especially if you have a large volume of posts. Without this plugin, expired content can remain live, leading to outdated or irrelevant information on your website. AIT Easy Post Customization solves this problem by allowing you to set expiry dates on posts, ensuring that content is automatically hidden or removed after the specified date. This keeps your site fresh and up-to-date without manual intervention.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>How does it improve the user experience?\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Automatic Expiry Handling\u003C\u002Fstrong>: Set an expiration date for any post or custom post type, and let the plugin automatically unpublish it when the time comes. This eliminates the need for manual updates and improves content accuracy.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Post Type Support\u003C\u002Fstrong>: Whether you’re using standard WordPress posts or custom post types (like events, job listings, products, etc.), you can easily add expiry functionality to all of them.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>User-Friendly Interface\u003C\u002Fstrong>: The plugin integrates seamlessly with the WordPress editor, making it easy for users of all skill levels to manage expiry dates. The expiry date can be set directly from the post editing screen.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Fields Management\u003C\u002Fstrong>: Add custom fields (text, textarea, date) to posts for enhanced content customization.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modern Admin Interface\u003C\u002Fstrong>: A sleek, responsive admin panel with sticky tabs, form validation, and intuitive navigation.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Key Features\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Post Expiration\u003C\u002Fstrong>: Set expiration dates for posts and custom post types, automatically moving them to draft status when expired.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Custom Fields\u003C\u002Fstrong>: Add and manage custom fields (text, textarea, date) for selected post types.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Supports All Post Types\u003C\u002Fstrong>: Works with standard WordPress posts and custom post types, allowing flexible use across various content types.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Seamless Integration\u003C\u002Fstrong>: Integrated into the post editor with a modern, user-friendly interface.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Scheduled Content Management\u003C\u002Fstrong>: Perfect for managing content like event updates, limited-time offers, and seasonal announcements.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Localization Ready\u003C\u002Fstrong>: Fully translation-ready for multilingual websites.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>\u003Cstrong>Notable Features\u003C\u002Fstrong>:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Custom Widgets\u003C\u002Fstrong>: Optionally display a widget that shows upcoming or recently expired content to site admins for better tracking (coming soon).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Developer-Friendly Hooks and Filters\u003C\u002Fstrong>: Developers can customize the plugin’s behavior using built-in hooks and filters.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>Modern Design\u003C\u002Fstrong>: Features a responsive admin interface with sticky tabs, Dashicons, and gradient effects for a premium experience.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>With AIT Easy Post Customization, you’ll never have to worry about outdated or irrelevant content cluttering your site again. Keep your content fresh, current, and timely with minimal effort.\u003C\u002Fp>\n\u003Ch3>1. What is AIT Easy Post Customization?\u003C\u002Fh3>\n\u003Cp>AIT Easy Post Customization is a WordPress plugin that allows users to set expiry dates for posts and custom post types and manage custom fields, ensuring content remains relevant and up-to-date.\u003C\u002Fp>\n\u003Ch3>2. How do I install the plugin?\u003C\u002Fh3>\n\u003Cp>You can install the plugin by uploading the plugin files to the \u003Ccode>\u002Fwp-content\u002Fplugins\u002Fait-easy-post-customization\u002F\u003C\u002Fcode> directory or by installing it directly through the WordPress plugins screen. After installation, activate the plugin through the ‘Plugins’ screen in WordPress.\u003C\u002Fp>\n\u003Ch3>3. Where can I configure the settings?\u003C\u002Fh3>\n\u003Cp>After activating the plugin, you can configure settings by navigating to the \u003Cstrong>Easy Post Customization\u003C\u002Fstrong> link in the WordPress sidebar. Here, you can manage expiry dates and custom fields for your posts and custom post types.\u003C\u002Fp>\n\u003Ch3>4. Can I set an expiry date for custom post types?\u003C\u002Fh3>\n\u003Cp>Yes! AIT Easy Post Customization allows you to set expiry dates for both standard posts and custom post types, giving you flexibility in managing your content.\u003C\u002Fp>\n\u003Ch3>5. What happens to a post when it expires?\u003C\u002Fh3>\n\u003Cp>Once a post expires, it will be automatically moved to draft status, hiding it from public view. Future updates may include options for other actions like deletion.\u003C\u002Fp>\n\u003Ch3>6. Is there any support available if I encounter issues?\u003C\u002Fh3>\n\u003Cp>Yes, for support and inquiries, you can contact me via email at \u003Ca href=\"mailto:kamran.channar99@gmail.com\" rel=\"nofollow ugc\">kamran.channar99@gmail.com\u003C\u002Fa> or connect with me on LinkedIn at \u003Ca href=\"https:\u002F\u002Flinkedin.com\u002Fin\u002Fmuhammad-kamran-64a33a166\" rel=\"nofollow ugc\">Muhammad Kamran\u003C\u002Fa>.\u003C\u002Fp>\n\u003Ch3>7. Is this plugin compatible with the latest version of WordPress?\u003C\u002Fh3>\n\u003Cp>Yes, AIT Easy Post Customization is tested up to WordPress version 6.6 and is designed to be compatible with the latest releases.\u003C\u002Fp>\n\u003Ch3>8. Is the plugin free to use?\u003C\u002Fh3>\n\u003Cp>Yes, AIT Easy Post Customization is completely free to use and is licensed under the GPLv2 or later.\u003C\u002Fp>\n\u003Ch3>License & Copyright\u003C\u002Fh3>\n\u003Cp>This plugin is licensed under the GPLv2 or later.\u003Cbr \u002F>\nYou can redistribute it and\u002For modify it under the terms of the GNU General Public License as published by the Free Software Foundation.\u003C\u002Fp>\n\u003Cp>This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details: https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fgpl-2.0.html\u003C\u002Fp>\n\u003Ch3>Contact\u003C\u002Fh3>\n\u003Cp>For inquiries, project discussions, or collaboration opportunities, feel free to reach out to me:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Email: \u003Ca href=\"mailto:kamran.channar99@gmail.com\" rel=\"nofollow ugc\">kamran.channar99@gmail.com\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>LinkedIn: \u003Ca href=\"https:\u002F\u002Flinkedin.com\u002Fin\u002Fmuhammad-kamran-64a33a166\" rel=\"nofollow ugc\">Muhammad Kamran\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>I look forward to connecting with you!\u003C\u002Fp>\n","Easily set expiry dates for posts and custom post types, automatically unpublishing content when it becomes outdated.",395,"2025-10-19T23:08:00.000Z","5.0","7.4",[20,88,89,90,91],"expiry-date","post-expiration","post-expiry","schedule-post","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fait-easy-post-customization.2.0.1.zip",{"slug":94,"name":95,"version":96,"author":97,"author_profile":98,"description":99,"short_description":100,"active_installs":101,"downloaded":102,"rating":103,"num_ratings":104,"last_updated":105,"tested_up_to":46,"requires_at_least":96,"requires_php":24,"tags":106,"homepage":111,"download_link":112,"security_score":56,"vuln_count":26,"unpatched_count":26,"last_vuln_date":27,"fetched_at":28},"shortcodes-to-show-or-hide-content","Show\u002FHide Content at Set Time","2.5","Dave Clements","https:\u002F\u002Fprofiles.wordpress.org\u002Fthewanderingbrit\u002F","\u003Cp>\u003Cstrong>Like this plugin?\u003C\u002Fstrong> Consider \u003Ca href=\"https:\u002F\u002Fwordpress.org\u002Fsupport\u002Fview\u002Fplugin-reviews\u002Fshortcodes-to-show-or-hide-content\" title=\"Review Show\u002FHide Content at Set Time\" rel=\"ugc\">leaving a quick review\u003C\u002Fa> or writing about how you’ve used it on your site – \u003Ca href=\"https:\u002F\u002Fwww.theukedge.com\u002Fcontact\u002F?utm_source=wordpress.org&utm_medium=plugin&utm_campaign=contact\" title=\"Contact Dave\" rel=\"nofollow ugc\">send me a link\u003C\u002Fa> to that write up if you do.\u003C\u002Fp>\n\u003Cp>This plugin is maintained on \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Ftheukedge\u002Fshortcodes-to-show-or-hide-content\" rel=\"nofollow ugc\">GitHub\u003C\u002Fa>, so feel free to use the repository for reporting issues, submitting feature requests and submitting pull requests.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cp>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.\u003C\u002Fp>\n\u003Ch4>Usage – single use\u003C\u002Fh4>\n\u003Cp>To show or hide content at one point in time, you can use the \u003Ccode>[time-restrict]\u003C\u002Fcode> shortcode. For example:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict off=\"2015-01-01\"]Please enter our competition[\u002Ftime-restrict]\n[time-restrict on=\"2015-01-01\"]Sorry, this competition has closed[\u002Ftime-restrict]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>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)\u003C\u002Fp>\n\u003Cp>You can use any date or time string \u003Ca href=\"http:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fdatetime.formats.php\" title=\"PHP Date and Time strings\" rel=\"nofollow ugc\">supported by PHP\u003C\u002Fa>, such as:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict off=\"September 10th, 2014\"]Will display until 09\u002F10\u002F2014[\u002Ftime-restrict]\n[time-restrict off=\"2014-09-10\"]Will display until 09\u002F10\u002F2014[\u002Ftime-restrict]\n[time-restrict off=\"10-Septmber 2014\"]Will display until 09\u002F10\u002F2014[\u002Ftime-restrict]\n[time-restrict on=\"2014\u002F09\u002F10 18:00:00\"]Will show after 09\u002F10\u002F2014 at 6pm[\u002Ftime-restrict]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>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:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict on=\"2015-01-01\" off=\"2015-01-11\"]\nThis is a limited time offer\n[\u002Ftime-restrict]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Ch4>Usage – repeating schedule\u003C\u002Fh4>\n\u003Cp>To show and hide content on a recurring schedule, you can use the \u003Ccode>[time-restrict-repeat]\u003C\u002Fcode> shortcode. Your options are a daily, weekly, monthly or annual schedule.\u003C\u002Fp>\n\u003Cp>A daily schedule takes the following form:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"daily\" ontime=\"09:00:00\" offtime=\"17:00:00\"]\nWorking 9 to 5\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Note that you can also cross over midnight, so to only show something from 10PM to 5AM, you can use:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"daily\" ontime=\"22:00:00\" offtime=\"05:00:00\"]\nFor the night owls\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>A weekly schedule takes the following form:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"weekly\" onday=\"Monday\" offday=\"Friday\"]\nThe work week\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>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):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"weekly\" onday=\"Friday\" offday=\"Monday\" ontime=\"17:00:00\" offtime=\"08:00:00\"]\nIt's the weekend baby!\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>A monthly schedule takes the following form:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"monthly\" ondate=\"01\" offdate=\"07\"]\nThe first week of the month\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can both cross over the end of the month, and apply times to your start and end dates, e.g.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"monthly\" ondate=\"25\" offdate=\"05\" ontime=\"17:00:00\" offtime=\"08:00:00\"]\nWe are exceptionally busy at the end of each billing cycle. Please bear with us!\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>And lastly, an annual schedule takes the following form:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"annually\" onmonth=\"June\" offmonth=\"August\" ondate=\"01\" offdate=\"31\"]\nI'm currently in the mountains enjoying the summer!\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>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.\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"annually\" onmonth=\"December\" ondate=\"24\" offmonth=\"January\" offdate=\"05\" ontime=\"17:00:00\" offtime=\"08:00:00\"]\nOur employees are currently enjoying time with their families for Christmas. We'll be back after the New Year.\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>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. \u003Ccode>[time-restrict-repeat-2]\u003C\u002Fcode>).\u003C\u002Fp>\n\u003Cp>For example, showing a message during business hours only on Monday to Friday:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[time-restrict-repeat type=\"daily\" ontime=\"08:00:00\" offtime=\"17:00:00\"]\n[time-restrict-repeat-2 type=\"weekly\" onday=\"Monday\" offday=\"Friday\"]\nOur store is currently open\n[\u002Ftime-restrict-repeat-2]\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>You can also define a message which should appear if your content is not showing by using the \u003Ccode>else\u003C\u002Fcode> 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:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>[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.\"]\n[time-restrict-repeat-2 type=\"weekly\" onday=\"Monday\" offday=\"Friday\" else=\"We're currently closed. Come back and see us when we're open.\"]\nOur store is currently open\n[\u002Ftime-restrict-repeat-2]\n[\u002Ftime-restrict-repeat]\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>Note that with nested shortcodes, you need to add the \u003Ccode>else\u003C\u002Fcode> attribute to each shortcode.\u003C\u002Fp>\n\u003Ch4>Things to bear in mind\u003C\u002Fh4>\n\u003Cul>\n\u003Cli>The time used by the plugin is your site’s local time (check in Settings > General).\u003C\u002Fli>\n\u003Cli>The \u003Ccode>else\u003C\u002Fcode> attribute \u003Cem>does\u003C\u002Fem> accept HTML, but is restricted by \u003Ca href=\"https:\u002F\u002Fcodex.wordpress.org\u002FShortcode_API#HTML\" rel=\"nofollow ugc\">WordPress’ limitation on HTML inside shortcode attributes\u003C\u002Fa>.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>I also run \u003Ca href=\"http:\u002F\u002Fwww.doitwithwp.com\u002F?utm_source=wordpress.org&utm_medium=plugin&utm_campaign=my-other-sites\" title=\"WordPress Tutorials\" rel=\"nofollow ugc\">Do It With WordPress\u003C\u002Fa>, which has an array of tutorials for managing, modifying and maintaining your WordPress sites, as well as \u003Ca href=\"https:\u002F\u002Fwww.thewpbutler.com\u002F?utm_source=wordpress.org&utm_medium=plugin&utm_campaign=wordpress-services\" title=\"WordPress Maintenance Services\" rel=\"nofollow ugc\">The WP Butler\u003C\u002Fa>, a service for keeping your site maintained, backed up, updated and secure.\u003C\u002Fp>\n","Shortcodes to wrap around text, which specify at what date or time that content should appear or disappear, either once, or on a recurring basis.",10000,39992,98,33,"2019-10-01T15:45:00.000Z",[107,108,22,109,110],"active","date","show-hide","time","https:\u002F\u002Fgithub.com\u002Ftheukedge\u002Fshortcodes-to-show-or-hide-content","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Fshortcodes-to-show-or-hide-content.2.5.zip",{"slug":114,"name":115,"version":116,"author":117,"author_profile":118,"description":119,"short_description":120,"active_installs":121,"downloaded":122,"rating":123,"num_ratings":124,"last_updated":125,"tested_up_to":67,"requires_at_least":126,"requires_php":24,"tags":127,"homepage":133,"download_link":134,"security_score":13,"vuln_count":14,"unpatched_count":26,"last_vuln_date":135,"fetched_at":28},"far-future-expiry-header","Far Future Expiry Header","1.6","mra13","https:\u002F\u002Fprofiles.wordpress.org\u002Fmra13\u002F","\u003Cp>This plugin offers a few lightweight features to speed up your WordPress site without much hassle.\u003C\u002Fp>\n\u003Ch4>Far Future Expiry\u003C\u002Fh4>\n\u003Cp>When the feature is enabled, this plugin will modify your .htaccess file by inserting code which will add expires headers for common static file types.\u003C\u002Fp>\n\u003Cp>Expiry header specifies a time far enough in the future so that browsers won’t try to re-fetch images, CSS, javascript etc files that haven’t changed (this reduces the number of HTTP requests) and hence the performance improvement on subsequent page views.\u003C\u002Fp>\n\u003Ch4>Gzip Compression\u003C\u002Fh4>\n\u003Cp>You can also enable Gzip compression on your site using this plugin. Gzip compression will speed up your WordPress site by compressing the page output and sending it to your visitors browser.\u003C\u002Fp>\n\u003Cp>When enabled, the plugin will do gzip compression if the visitor’s browser can handle it.\u003C\u002Fp>\n\u003Cp>This feature may conflict with a few other plugins. So disable this feature if you need to use a plugin which doesn’t work with gzip compression.\u003C\u002Fp>\n\u003Ch3>Usage\u003C\u002Fh3>\n\u003Cp>To use this plugin do the following:\u003C\u002Fp>\n\u003Cp>1) Ensure that the “mod_expires” module is enabled from your host’s main configuration file\u003C\u002Fp>\n\u003Cp>2) Check with your hosting provider or if you have access to the httpd.conf file the following line should be uncommented:\u003Cbr \u002F>\nLoadModule expires_module modules\u002Fmod_expires.so\u003C\u002Fp>\n\u003Cp>3) Enable the “Far Future Expiration” checkbox\u003C\u002Fp>\n\u003Cp>4) Set the number of days till expiry\u003C\u002Fp>\n\u003Cp>5) Select the file types you wish to enable the “far future expiration” feature for by using the checkboxes in the “File Types” section\u003C\u002Fp>\n\u003Cp>NOTE: When you use this plugin, the file selected file types are cached in the browser until they expire. Therefore you should not use this on files that change frequently.\u003C\u002Fp>\n\u003Cp>More details can be found on the \u003Ca href=\"https:\u002F\u002Fwww.tipsandtricks-hq.com\u002Fwordpress-far-future-expiration-plugin-5980\" rel=\"nofollow ugc\">plugin’s documentation page\u003C\u002Fa>\u003C\u002Fp>\n","This plugin will add a far future expiry header for various file types to improve page load speed of your site",7000,230392,64,31,"2025-12-02T03:13:00.000Z","5.5",[128,129,130,131,132],"cache","expires-header","expiry","expiry-header","far-future-expiration","https:\u002F\u002Fwww.tipsandtricks-hq.com\u002Fwordpress-far-future-expiration-plugin-5980","https:\u002F\u002Fdownloads.wordpress.org\u002Fplugin\u002Ffar-future-expiry-header.zip","2021-10-04 00:00:00",{"attackSurface":137,"codeSignals":197,"taintFlows":214,"riskAssessment":215,"analyzedAt":221},{"hooks":138,"ajaxHandlers":192,"restRoutes":193,"shortcodes":194,"cronEvents":195,"entryPointCount":26,"unprotectedCount":26},[139,145,149,154,158,162,166,169,173,177,181,185,189],{"type":140,"name":141,"callback":142,"file":143,"line":144},"filter","cron_schedules","njtape_post_expiry_add_custom_cron","cron-function.php",23,{"type":146,"name":142,"callback":147,"file":143,"line":148},"action","njtape_post_expiry_custom_cron_event_func",191,{"type":146,"name":150,"callback":151,"file":152,"line":153},"admin_menu","njtape_settings_page_main","ninja-auto-post-expire.php",61,{"type":140,"name":155,"callback":156,"file":152,"line":157},"manage_post_posts_columns","closure",73,{"type":146,"name":159,"callback":156,"priority":160,"file":152,"line":161},"manage_post_posts_custom_column",10,89,{"type":146,"name":163,"callback":164,"file":152,"line":165},"admin_init","njtape_add_expiry_column_other_posts",215,{"type":146,"name":163,"callback":167,"file":152,"line":168},"njtape_post_expire_settings",285,{"type":140,"name":170,"callback":171,"file":152,"line":172},"admin_body_class","njtape_admin_body_class",437,{"type":146,"name":174,"callback":175,"file":152,"line":176},"admin_head","njtape_css_option_page",463,{"type":146,"name":178,"callback":179,"file":152,"line":180},"admin_enqueue_scripts","njtape_auto_post_expire_add_datepicker_scripts",499,{"type":146,"name":182,"callback":183,"file":152,"line":184},"add_meta_boxes","njtape_auto_post_expire_expiration_meta_box",503,{"type":146,"name":186,"callback":187,"file":152,"line":188},"save_post","njtape_auto_post_expire_save_expiration_meta_box_data",529,{"type":146,"name":178,"callback":190,"file":152,"line":191},"njtape_auto_post_expire_add_inline_style",563,[],[],[],[196],{"hook":142,"callback":142,"file":143,"line":104},{"dangerousFunctions":198,"sqlUsage":199,"outputEscaping":201,"fileOperations":26,"externalRequests":26,"nonceChecks":14,"capabilityChecks":212,"bundledLibraries":213},[],{"prepared":26,"raw":26,"locations":200},[],{"escaped":202,"rawEcho":203,"locations":204},17,3,[205,208,210],{"file":152,"line":206,"context":207},301,"raw output",{"file":152,"line":209,"context":207},303,{"file":152,"line":211,"context":207},317,2,[],[],{"summary":216,"deductions":217},"The ninja-auto-post-expire v1.2 plugin exhibits a generally strong security posture based on the provided static analysis. The absence of any AJAX handlers, REST API routes, shortcodes, or external HTTP requests significantly limits the potential attack surface. Furthermore, the code demonstrates good practices by utilizing prepared statements for all SQL queries and performing nonce and capability checks, which are crucial for preventing common web vulnerabilities.\n\nDespite the positive indicators, a minor concern arises from the 15% of output that is not properly escaped. While this percentage is relatively low, it could potentially lead to cross-site scripting (XSS) vulnerabilities if user-supplied data is involved in these unescaped outputs. The taint analysis reporting zero flows with unsanitized paths or critical\u002Fhigh severity issues is a very positive sign, indicating that even where data might be handled, it appears to be done so safely.\n\nThe plugin's vulnerability history is completely clean, with no recorded CVEs. This lack of past issues suggests a commitment to security by the developers or a long period of stable, secure development. Overall, the plugin is well-secured, with the primary area for improvement being the complete sanitization of all output data to eliminate any lingering XSS risks.",[218],{"reason":219,"points":220},"Unescaped output detected",4,"2026-03-16T19:17:47.670Z",{"wat":223,"direct":229},{"assetPaths":224,"generatorPatterns":226,"scriptPaths":227,"versionParams":228},[225],"\u002Fwp-content\u002Fplugins\u002Fninja-auto-post-expire\u002Fcss\u002Fnjtape_style.css",[],[],[],{"cssClasses":230,"htmlComments":232,"htmlAttributes":233,"restEndpoints":268,"jsGlobals":269,"shortcodeOutput":270},[231],"njt-option-page",[],[234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267],"id=\"njtape_post_expire_option\"","name=\"njtape_post_expire_option\"","id=\"njtape_post_expire\"","name=\"njtape_post_expire\"","id=\"njtape_page_expire\"","name=\"njtape_page_expire\"","id=\"njtape_attachment_expire\"","name=\"njtape_attachment_expire\"","id=\"njtape_nav_menu_item_expire\"","name=\"njtape_nav_menu_item_expire\"","id=\"njtape_customize_changeset_expire\"","name=\"njtape_customize_changeset_expire\"","id=\"njtape_oembed_cache_expire\"","name=\"njtape_oembed_cache_expire\"","id=\"njtape_user_expire\"","name=\"njtape_user_expire\"","id=\"njtape_revision_expire\"","name=\"njtape_revision_expire\"","id=\"njtape_log_expire\"","name=\"njtape_log_expire\"","id=\"njtape_comment_expire\"","name=\"njtape_comment_expire\"","id=\"njtape_pingback_expire\"","name=\"njtape_pingback_expire\"","id=\"njtape_wp_block_expire\"","name=\"njtape_wp_block_expire\"","id=\"njtape_wp_template_expire\"","name=\"njtape_wp_template_expire\"","id=\"njtape_wp_template_part_expire\"","name=\"njtape_wp_template_part_expire\"","id=\"njtape_wp_navigation_expire\"","name=\"njtape_wp_navigation_expire\"","id=\"njtape_menu_item_expire\"","name=\"njtape_menu_item_expire\"",[],[],[]]