diff --git a/admin/css/wpa-superstar-admin.css b/admin/css/wpa-superstar-admin.css index 728952b..b84ccd8 100644 --- a/admin/css/wpa-superstar-admin.css +++ b/admin/css/wpa-superstar-admin.css @@ -174,13 +174,7 @@ box-shadow: 0 2px 4px rgba(0,0,0,0.3); } -/* Settings content spacing */ -.wpa-settings-content { - margin-top: 30px; - padding: 0 10px; -} - -/* Plugin Browser Styles */ +/* Plugin filters */ .wpa-plugin-filters { margin: 0 0 20px; padding: 0 0 12px; @@ -195,98 +189,7 @@ min-height: 30px; } -.wpa-plugins-browser { - display: grid; - grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); - gap: 20px; - margin-top: 20px; -} - -.plugin-card { - background-color: #fff; - border: 1px solid #ddd; - border-radius: 4px; - box-shadow: 0 1px 4px rgba(0,0,0,0.02); - margin: 0; - width: 100%; - padding: 0; - transition: all .15s ease-in-out; -} - -.plugin-card:hover { - border-color: #4caf50; - box-shadow: 0 2px 8px rgba(0,0,0,0.04); -} - -.plugin-card-top { - padding: 20px; - min-height: 150px; - display: flex; - flex-direction: column; - justify-content: space-between; -} - -.plugin-card .name { - margin-bottom: 12px; -} - -.plugin-card .name h3 { - font-size: 16px; - line-height: 1.3; - margin: 0; - color: #1d2327; -} - -.plugin-card .plugin-author { - font-size: 13px; - color: #646970; - font-weight: 400; - margin-left: 8px; -} - -.plugin-card .desc { - margin: 8px 0; - color: #50575e; -} - -.plugin-card .desc p { - margin: 0; - font-size: 13px; - line-height: 1.5; -} - -.plugin-card .action-links { - margin-top: 16px; -} - -.plugin-action-buttons { - margin: 0; - padding: 0; - list-style: none; -} - -.plugin-action-buttons li { - display: inline-block; - margin: 0; -} - -.plugin-action-buttons .button { - min-height: 30px; - line-height: 28px; - padding: 0 12px; - font-size: 13px; -} - -.plugin-action-buttons .button-disabled { - color: #a7aaad !important; - border-color: #ddd !important; - background: #f6f7f7 !important; - box-shadow: none !important; - cursor: default; - transform: none !important; -} - -/* Adjust settings content padding for plugin browser */ +/* Settings content spacing */ .wpa-settings-content { margin-top: 20px; padding: 0; diff --git a/admin/settings.php b/admin/settings.php index ea8d8ee..01ed13e 100644 --- a/admin/settings.php +++ b/admin/settings.php @@ -13,136 +13,105 @@ function wpa_superstar_admin_menu() { 'wpa_superstar_settings_page' ); } -add_action( 'admin_menu', 'wpa_superstar_admin_menu' ); +add_action('admin_menu', 'wpa_superstar_admin_menu'); // Register settings function wpa_superstar_register_settings() { - register_setting( 'wpa-superstar-settings', 'wpa_superstar_lazy_load' ); - register_setting( 'wpa-superstar-settings', 'wpa_superstar_minify_css' ); - register_setting( 'wpa-superstar-settings', 'wpa_superstar_minify_js' ); + register_setting('wpa-superstar-settings', 'wpa_superstar_lazy_load'); + register_setting('wpa-superstar-settings', 'wpa_superstar_minify_css'); + register_setting('wpa-superstar-settings', 'wpa_superstar_minify_js'); } -add_action( 'admin_init', 'wpa_superstar_register_settings' ); +add_action('admin_init', 'wpa_superstar_register_settings'); -// AJAX handler +// AJAX handler for settings function wpa_superstar_update_option() { - check_ajax_referer( 'wpa-superstar-nonce', 'nonce' ); - $option = sanitize_text_field( $_POST['option'] ); - $value = intval( $_POST['value'] ); - update_option( $option, $value ); - wp_send_json_success( 'Option updated' ); + check_ajax_referer('wpa-superstar-nonce', 'nonce'); + $option = sanitize_text_field($_POST['option']); + $value = intval($_POST['value']); + update_option($option, $value); + wp_send_json_success('Option updated'); } -add_action( 'wp_ajax_wpa_superstar_update_option', 'wpa_superstar_update_option' ); +add_action('wp_ajax_wpa_superstar_update_option', 'wpa_superstar_update_option'); // Define recommended plugins function wpa_superstar_get_recommended_plugins() { return array( - 'utilities' => array( - 'name' => 'Recommended', - 'plugins' => array( - array( - 'slug' => 'advanced-custom-fields', - 'name' => 'Advanced Custom Fields', - 'description' => 'Customize WordPress with powerful, professional and intuitive fields.', - 'author' => 'WP Engine', - 'category' => 'recommended' - ), - array( - 'slug' => 'admin-menu-editor', - 'name' => 'Admin Menu Editor', - 'description' => 'Customize the WordPress admin menu.', - 'author' => 'Janis Elsts', - 'category' => 'recommended' - ), - array( - 'slug' => 'antispam-bee', - 'name' => 'Antispam Bee', - 'description' => 'Antispam plugin with a sophisticated toolset for effective spam protection.', - 'author' => 'pluginkollektiv', - 'category' => 'recommended' - ), - array( - 'slug' => 'burst-statistics', - 'name' => 'Burst Statistics', - 'description' => 'Privacy-friendly analytics tool.', - 'author' => 'Really Simple Plugins', - 'category' => 'recommended' - ) - ) + 'recommended' => array( + 'advanced-custom-fields', + 'admin-menu-editor', + 'antispam-bee', + 'burst-statistics', + 'freesoul-deactivate-plugins', + 'plugin-toggle', + 'pretty-links', + 'seo-by-rank-math', + 'turnstile' ), - 'fluent' => array( - 'name' => 'Advanced', - 'plugins' => array( - array( - 'slug' => 'fluent-crm', - 'name' => 'Fluent CRM', - 'description' => 'Marketing Automation for WordPress.', - 'author' => 'WP Fluent', - 'category' => 'advanced' - ), - array( - 'slug' => 'fluentform', - 'name' => 'Fluent Forms', - 'description' => 'Advanced Contact Form Plugin.', - 'author' => 'WP Fluent', - 'category' => 'advanced' - ), - array( - 'slug' => 'fluent-smtp', - 'name' => 'Fluent SMTP', - 'description' => 'The Most Advanced SMTP & Email Service Integration Plugin.', - 'author' => 'WP Fluent', - 'category' => 'advanced' - ), - array( - 'slug' => 'fluent-support', - 'name' => 'Fluent Support', - 'description' => 'Customer Support & Helpdesk Plugin.', - 'author' => 'WP Fluent', - 'category' => 'advanced' - ) - ) + 'advanced' => array( + 'fluent-crm', + 'fluentform', + 'fluent-smtp', + 'fluent-support' ), 'ecommerce' => array( - 'name' => 'Ecommerce', - 'plugins' => array( - array( - 'slug' => 'woocommerce', - 'name' => 'WooCommerce', - 'description' => 'An eCommerce toolkit that helps you sell anything.', - 'author' => 'Automattic', - 'category' => 'ecommerce' - ), - array( - 'slug' => 'client-booking', - 'name' => 'Client Bookings', - 'description' => 'Appointment Scheduling & Booking.', - 'author' => 'WP Fluent', - 'category' => 'ecommerce' - ) - ) + 'woocommerce', + 'client-booking' ), 'lms' => array( - 'name' => 'LMS', - 'plugins' => array( - // Add LMS plugins here when needed - ) + // Add LMS plugins when needed ) ); } +// Filter the plugins API results +function wpa_superstar_filter_plugins_api($result, $action, $args) { + if ($action !== 'query_plugins') { + return $result; + } + + // Only filter on our page + if (!isset($_GET['page']) || $_GET['page'] !== 'wpa-superstar') { + return $result; + } + + $category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'recommended'; + $recommended_plugins = wpa_superstar_get_recommended_plugins(); + + if (!isset($recommended_plugins[$category])) { + return $result; + } + + // Get the full plugin data for our recommended plugins + $args = array( + 'per_page' => 100, + 'fields' => array( + 'last_updated' => true, + 'active_installs' => true, + 'downloaded' => true, + 'icons' => true, + ), + 'slug' => $recommended_plugins[$category] + ); + + $query = new WP_Plugin_Install_List_Table(); + $query->prepare_items(); + + return plugins_api('query_plugins', $args); +} +add_filter('plugins_api_result', 'wpa_superstar_filter_plugins_api', 10, 3); + // Settings page HTML function wpa_superstar_settings_page() { - $active_tab = isset( $_GET['tab'] ) ? $_GET['tab'] : 'recommended'; - $active_category = isset( $_GET['category'] ) ? $_GET['category'] : 'recommended'; - $recommended_plugins = wpa_superstar_get_recommended_plugins(); + $active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'recommended'; + $active_category = isset($_GET['category']) ? $_GET['category'] : 'recommended'; ?>
- +
- +
- +