From 1d70eb4c33c28afa554b43523d3c3dc293ba4416 Mon Sep 17 00:00:00 2001 From: Marcus Quinn <marcus@agentdesign.co.uk> Date: Fri, 14 Mar 2025 03:36:27 +0000 Subject: [PATCH] Fix plugin filtering and update labels: - Fix plugins API result filtering - Change Recommended to Free Plugins and Minimal - Add proper plugin data handling --- admin/settings.php | 45 +++++++++++++++++++++++++++++++++------------ 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/admin/settings.php b/admin/settings.php index 77f2bf7..7d6d074 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -36,7 +36,7 @@ add_action('wp_ajax_wpa_superstar_update_option', 'wpa_superstar_update_option') // Define recommended plugins function wpa_superstar_get_recommended_plugins() { return array( - 'recommended' => array( + 'minimal' => array( 'advanced-custom-fields', 'admin-menu-editor', 'antispam-bee', @@ -64,26 +64,47 @@ function wpa_superstar_get_recommended_plugins() { } // Filter plugins API to show only our recommended plugins -function wpa_superstar_plugins_api_filter($args) { +function wpa_superstar_plugins_api_result($res, $action, $args) { + if ($action !== 'query_plugins') { + return $res; + } + if (!empty($_GET['page']) && $_GET['page'] === 'wpa-superstar') { - $category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'recommended'; + $category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'minimal'; $recommended_plugins = wpa_superstar_get_recommended_plugins(); if (isset($recommended_plugins[$category])) { - $args->per_page = 100; - $args->plugins = $recommended_plugins[$category]; + // Get plugin data for our recommended plugins + $args = (object) array( + 'per_page' => 100, + 'fields' => array( + 'last_updated' => true, + 'active_installs' => true, + 'downloaded' => true, + 'icons' => true, + ), + 'locale' => get_user_locale(), + 'slugs' => $recommended_plugins[$category] + ); + + $query = plugins_api('query_plugins', $args); + + if (!is_wp_error($query)) { + return $query; + } } } - return $args; + + return $res; } -add_filter('plugins_api_args', 'wpa_superstar_plugins_api_filter'); +add_filter('plugins_api_result', 'wpa_superstar_plugins_api_result', 10, 3); // Settings page HTML function wpa_superstar_settings_page() { global $tabs; $active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'recommended'; - $active_category = isset($_GET['category']) ? $_GET['category'] : 'recommended'; + $active_category = isset($_GET['category']) ? $_GET['category'] : 'minimal'; // Ensure required files are loaded if ($active_tab === 'recommended') { @@ -108,7 +129,7 @@ function wpa_superstar_settings_page() { <div class="wpa-superstar-nav"> <h2 class="nav-tab-wrapper"> <a href="?page=wpa-superstar&tab=recommended" class="nav-tab <?php echo $active_tab == 'recommended' ? 'nav-tab-active' : ''; ?>"> - <?php esc_html_e('Recommended', 'wpa-superstar'); ?> + <?php esc_html_e('Free Plugins', 'wpa-superstar'); ?> </a> <a href="?page=wpa-superstar&tab=general" class="nav-tab <?php echo $active_tab == 'general' ? 'nav-tab-active' : ''; ?>"> <?php esc_html_e('General', 'wpa-superstar'); ?> @@ -122,9 +143,9 @@ function wpa_superstar_settings_page() { <div class="wpa-settings-content"> <?php if ($active_tab == 'recommended'): ?> <div class="wpa-plugin-filters"> - <a href="?page=wpa-superstar&tab=recommended&category=recommended" - class="button <?php echo $active_category == 'recommended' ? 'button-primary' : ''; ?>"> - <?php esc_html_e('Recommended', 'wpa-superstar'); ?> + <a href="?page=wpa-superstar&tab=recommended&category=minimal" + class="button <?php echo $active_category == 'minimal' ? 'button-primary' : ''; ?>"> + <?php esc_html_e('Minimal', 'wpa-superstar'); ?> </a> <a href="?page=wpa-superstar&tab=recommended&category=advanced" class="button <?php echo $active_category == 'advanced' ? 'button-primary' : ''; ?>">