{"id":176729,"date":"2023-06-18T07:07:37","date_gmt":"2023-06-18T07:07:37","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/plu-redux\/"},"modified":"2026-05-16T21:49:26","modified_gmt":"2026-05-16T21:49:26","slug":"plu-redux","status":"publish","type":"plugin","link":"https:\/\/mn.wordpress.org\/plugins\/plu-redux\/","author":296844,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"3.0.1","stable_tag":"3.0.1","tested":"7.0","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"PLU Redux","header_author":"Jason Cosper","header_description":"Display the last updated date for plugins in the <a href=\"http:\/\/wordpress.org\/plugins\/\">WordPress Plugin Directory<\/a>.","assets_banners_color":"5e5957","last_updated":"2026-05-16 21:49:26","external_support_url":"","external_repository_url":"","donate_link":"http:\/\/paypal.me\/boogah","header_plugin_uri":"","header_author_uri":"https:\/\/jasoncosper.com\/","rating":0,"author_block_rating":0,"active_installs":10,"downloads":917,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"2.2.2":{"tag":"2.2.2","author":"boogah","date":"2023-06-18 07:08:45"},"2.2.3":{"tag":"2.2.3","author":"boogah","date":"2024-07-16 17:11:47"},"3.0.0":{"tag":"3.0.0","author":"boogah","date":"2026-05-16 21:33:32"},"3.0.1":{"tag":"3.0.1","author":"boogah","date":"2026-05-16 21:49:26"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":2927457,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-772x250.png":{"filename":"banner-772x250.png","revision":2927457,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["2.2.2","2.2.3","3.0.0","3.0.1"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[2391,600,151481],"plugin_category":[54],"plugin_contributors":[80079],"plugin_business_model":[],"class_list":["post-176729","plugin","type-plugin","status-publish","hentry","plugin_tags-plugins","plugin_tags-security","plugin_tags-site-health","plugin_category-security-and-spam-protection","plugin_contributors-boogah","plugin_committers-boogah"],"banners":{"banner":"https:\/\/ps.w.org\/plu-redux\/assets\/banner-772x250.png?rev=2927457","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/plu-redux\/assets\/icon-256x256.png?rev=2927457","icon_2x":"https:\/\/ps.w.org\/plu-redux\/assets\/icon-256x256.png?rev=2927457","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>PLU Redux displays the \"Last Updated\" date and \"Tested up to\" version for all of your installed plugins. If a plugin hasn't been updated in over two years - or hasn't been tested with a recent WordPress version - you'll get a warning emoji next to the relevant field.<\/p>\n\n<p>Version 3.0 adds full support for plugins managed by <a href=\"https:\/\/git-updater.com\/\">Git Updater<\/a>. GitHub, GitLab, Bitbucket, Gitea, and Gist are all supported.<\/p>\n\n<h3>Usage<\/h3>\n\n<p>Once activated, head over to your Plugins screen. You'll see \"Last Updated\" and \"Tested up to\" info in the metadata row for each plugin. Warning emojis appear when a plugin hasn't been updated in over two years or its \"Tested up to\" version is significantly behind your current WordPress version.<\/p>\n\n<p>For the Site Health checks, navigate to Tools \u2192 Site Health in your WordPress dashboard.<\/p>\n\n<h3>Git Updater Support<\/h3>\n\n<p>PLU Redux automatically detects plugins using <a href=\"https:\/\/git-updater.com\/\">Git Updater<\/a> headers and queries the appropriate hosting API for last updated info.<\/p>\n\n<p>Supported platforms:<\/p>\n\n<ul>\n<li>GitHub (<code>GitHub Plugin URI<\/code>) - checks releases first, falls back to last commit<\/li>\n<li>GitLab (<code>GitLab Plugin URI<\/code>) - uses <code>last_activity_at<\/code><\/li>\n<li>Bitbucket (<code>Bitbucket Plugin URI<\/code>) - uses <code>updated_on<\/code><\/li>\n<li>Gitea (<code>Gitea Plugin URI<\/code>) - self-hosted; requires a full URL in the header<\/li>\n<li>Gist (<code>Gist Plugin URI<\/code>) - uses gist <code>updated_at<\/code><\/li>\n<\/ul>\n\n<p>PLU Redux also respects the <code>Primary Branch<\/code> header. When there's no release, it falls back to the last commit on the specified branch.<\/p>\n\n<p>Note: \"Tested up to\" is only available for WordPress.org plugins. Git-hosted plugins will only show \"Last updated.\"<\/p>\n\n<h3>Site Health Check<\/h3>\n\n<p>PLU Redux adds two checks to Tools \u2192 Site Health:<\/p>\n\n<ul>\n<li><strong>Outdated plugins<\/strong> - Lists any plugins not updated in 2+ years (critical status).<\/li>\n<li><strong>Untested plugins<\/strong> - Lists plugins not tested with a recent WordPress version (recommended status).<\/li>\n<\/ul>\n\n<h3>WP-CLI Command<\/h3>\n\n<p>PLU Redux includes a WP-CLI command: <code>wp plu list<\/code><\/p>\n\n<p>This outputs a table of your installed plugins with their last updated dates and tested versions. Plugins needing attention are flagged with an arrow (<code>&lt;-<\/code>). A <code>-<\/code> in the \"Tested Up To\" column means the plugin isn't in the WordPress.org directory.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to the <code>\/wp-content\/plugins\/plu-redux<\/code> directory via SFTP, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the 'Plugins' screen in WordPress.<\/li>\n<li>That's it! The plugin will automatically display last updated dates and tested versions for your installed plugins.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"how%20does%20the%20plugin%20determine%20if%20a%20plugin%20hasn%27t%20been%20updated%20in%20over%20two%20years%3F\"><h3>How does the plugin determine if a plugin hasn't been updated in over two years?<\/h3><\/dt>\n<dd><p>The plugin checks the WordPress.org API (or the appropriate git hosting API for Git Updater plugins) and caches the results in a transient for 24 hours. If the last updated date is older than two years, a warning emoji (\u26a0\ufe0f) is displayed next to the \"Last Updated\" date.<\/p><\/dd>\n<dt id=\"how%20does%20the%20%22tested%20up%20to%22%20check%20work%3F\"><h3>How does the \"Tested up to\" check work?<\/h3><\/dt>\n<dd><p>Same API call. If a plugin's \"Tested up to\" version is a full major version behind - or more than one minor version behind on the same major - you'll see a warning emoji.<\/p><\/dd>\n<dt id=\"why%20don%27t%20my%20git%20updater%20plugins%20show%20%22tested%20up%20to%22%3F\"><h3>Why don't my Git Updater plugins show \"Tested up to\"?<\/h3><\/dt>\n<dd><p>Git hosting APIs don't have that information. Only WordPress.org tracks \"Tested up to\" versions. For git-hosted plugins, PLU Redux shows the last updated date only.<\/p><\/dd>\n<dt id=\"can%20i%20customize%20the%20warning%20emoji%20or%20the%20text%20that%27s%20displayed%3F\"><h3>Can I customize the warning emoji or the text that's displayed?<\/h3><\/dt>\n<dd><p>Nope. Decisions, not options!<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20work%20with%20premium%20or%20private%20plugins%3F\"><h3>Does the plugin work with premium or private plugins?<\/h3><\/dt>\n<dd><p>Only if they use Git Updater headers pointing to a public repository. Private repos or plugins with no Git Updater headers won't show any info.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>3.0.1<\/h4>\n\n<ul>\n<li>Fixed short description exceeding the 150-character limit for the WordPress.org plugin directory.<\/li>\n<\/ul>\n\n<h4>3.0.0<\/h4>\n\n<ul>\n<li>New: Git Updater support - plugins with <code>GitHub Plugin URI<\/code>, <code>GitLab Plugin URI<\/code>, <code>Bitbucket Plugin URI<\/code>, <code>Gitea Plugin URI<\/code>, or <code>Gist Plugin URI<\/code> headers now show last updated dates from their respective APIs.<\/li>\n<li>New: Added \"Tested up to\" version display in plugin metadata.<\/li>\n<li>New: Added Site Health check for plugins not tested with recent WordPress versions.<\/li>\n<li>New: WP-CLI command now shows \"Tested up to\" column.<\/li>\n<li>Git Updater plugin cache includes \u00b11 hour jitter to spread out API requests.<\/li>\n<li>Respects <code>Primary Branch<\/code> header when falling back from releases to branch commits.<\/li>\n<li>Security: Replaced <code>serialize()<\/code>\/<code>unserialize()<\/code> with JSON API (v1.2) to prevent potential object injection vulnerabilities.<\/li>\n<li>Security: Added proper output escaping with <code>esc_html()<\/code> and <code>esc_attr__()<\/code>.<\/li>\n<li>Security: Added <code>is_wp_error()<\/code> check and input sanitization on API requests.<\/li>\n<li>Refactored caching to store both <code>last_updated<\/code> and <code>tested<\/code> fields.<\/li>\n<li>Added text domain (<code>plu-redux<\/code>) to all translatable strings for proper i18n support.<\/li>\n<li>Added uninstall hook to clean up transients when the plugin is deleted.<\/li>\n<li>Updated code to follow WordPress Coding Standards.<\/li>\n<li>Replaced magic number <code>86400<\/code> with <code>DAY_IN_SECONDS<\/code> constant.<\/li>\n<li>Added PHPDoc blocks to all functions.<\/li>\n<li>Fixed HTTP to HTTPS for wordpress.org links.<\/li>\n<\/ul>\n\n<h4>2.2.3<\/h4>\n\n<ul>\n<li>Added <code>aria-label<\/code> to warning emoji to improve accessibility. Special thanks to Dale Reardon for letting me know about this!<\/li>\n<\/ul>\n\n<h4>2.2.2<\/h4>\n\n<ul>\n<li>Making an attempt to meet WP Plugin Directory requirements.<\/li>\n<li>Added some documentation around the site health check to the README.<\/li>\n<\/ul>\n\n<h4>2.2.1<\/h4>\n\n<ul>\n<li>Plugin now uses site's preferred date format.<\/li>\n<li>Also cleaned up some wonky formatting. \ud83d\ude05<\/li>\n<\/ul>\n\n<h4>2.2.0<\/h4>\n\n<ul>\n<li>Added a Site Health check that lists any outdated plugins.<\/li>\n<\/ul>\n\n<h4>2.1.1<\/h4>\n\n<ul>\n<li>Fixed bug that would prevent plugin from being installable when WP-CLI is not available.<\/li>\n<li>Added Git Updater header.<\/li>\n<\/ul>\n\n<h4>2.1.0<\/h4>\n\n<ul>\n<li>Added a WP-CLI command.<\/li>\n<\/ul>\n\n<h4>2.0.0<\/h4>\n\n<ul>\n<li>Brought code up to date.<\/li>\n<li>Added feature where a warning emoji is displayed next to plugins that have not been updated in over two years.<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>See <a href=\"https:\/\/wordpress.org\/plugins\/plugin-last-updated\/\">Plugin Last Updated<\/a> WordPress Plugin Directory listing for previous changelog entries.<\/li>\n<\/ul>","raw_excerpt":"Displays the &quot;Last Updated&quot; date and &quot;Tested up to&quot; version for your plugins. Supports WordPress.org and Git Updater plugins.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/176729","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=176729"}],"author":[{"embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/boogah"}],"wp:attachment":[{"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=176729"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=176729"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=176729"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=176729"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=176729"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/mn.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=176729"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}