From 4af73b93dc0193245ddcb63bf717fe271196db87 Mon Sep 17 00:00:00 2001 From: Jason Cosper Date: Fri, 5 May 2023 17:23:13 +0000 Subject: [PATCH] Added WP-CLI command --- README.md | 27 +++++++++++++++++++++++++++ plu-redux.php | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+) diff --git a/README.md b/README.md index 970457c..1f6a81a 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,30 @@ On plugins that have not been updated in over two years, a warning emoji is disp 2. Activate the plugin through the 'Plugins' screen in WordPress. 3. That's it! The plugin will automatically display the last updated date for installed plugins available in the WordPress Plugin Directory. +Sure, here's an example section that you can add to the `README.md` file to document the new WP-CLI command: + +## WP-CLI Command + +PLU Redux includes a WP-CLI command that displays the "Last Updated" date of installed plugins. Here's how you use it: + +``` +wp plu list +``` + +This command will output a list of installed (WordPress Plugin Directory listed) plugins alongside their "Last Updated" date: + +``` ++-----------------------------------+---------------------------+ +| Plugin Name | Last Updated | ++-----------------------------------+---------------------------+ +| Akismet Anti-Spam Spam Protection | 2023-04-05 10:17am GMT | +| Lazy Load | 2018-11-22 04:43am GMT ← | +| Proxy Cache Purge | 2022-06-09 10:57pm GMT | ++-----------------------------------+---------------------------+ +``` + +Plugins that have not been updated in over two years will be highlighted with an arrow (←) to the right of the "Last Updated" date. + ## Frequently Asked Questions ### How does the plugin determine if a plugin hasn't been updated in over two years? @@ -28,6 +52,9 @@ Sadly, no. PLU Redux only works with plugins that are available in the WordPress ## Changelog +### 2.1.0 +* Added a WP-CLI command. + ### 2.0.0 * Brought code up to date. * Added feature where a warning emoji is displayed next to plugins that have not been updated in over two years. diff --git a/plu-redux.php b/plu-redux.php index 40b2611..1b24b14 100644 --- a/plu-redux.php +++ b/plu-redux.php @@ -93,3 +93,42 @@ function plu_redux_get_last_updated( $slug ) { return false; } + +/** + * WP-CLI command to display last updated dates of installed plugins. + */ +function plu_redux_last_updated_command() { + $plugins = get_plugins(); + + $table = new \cli\Table(); + $table->setHeaders(array('Plugin Name', 'Last Updated')); + + foreach ($plugins as $plugin_file => $plugin_info) { + // Extract the plugin's slug from the plugin filename + list($slug) = explode('/', $plugin_file); + + // Generate a unique hash of the plugin's slug + $slug_hash = md5($slug); + + // Get the last updated date from the cache + $last_updated = get_transient("plu_redux_{$slug_hash}"); + + // If the cache does not have the date, retrieve it from the WordPress API and cache it + if (false === $last_updated) { + $last_updated = plu_redux_get_last_updated($slug); + set_transient("plu_redux_{$slug_hash}", $last_updated, 86400); // cache for one day + } + + if ($last_updated) { + // Check if last update was more than 2 years ago + $two_years_ago = strtotime('-2 years'); // get a Unix timestamp for 2 years ago + $last_updated_timestamp = strtotime($last_updated); // get a Unix timestamp for the last updated date + $is_old = $last_updated_timestamp < $two_years_ago; // check if the last updated date is older than 2 years + $warning = $is_old ? ' ←' : ''; // if the last updated date is older than 2 years, add a warning symbol + $table->addRow(array($plugin_info['Name'], $last_updated . $warning)); + } + } + + $table->display(); +} +\WP_CLI::add_command('plu list', 'plu_redux_last_updated_command');