array( 'antispam-bee', 'compressx', 'fluent-smtp', 'kadence-blocks', 'simple-cloudflare-turnstile' ), 'admin' => array( 'admin-bar-dashboard-control', 'admin-menu-editor', 'hide-admin-notices', 'mainwp-child', 'mainwp-child-reports', 'magic-login', 'manage-notification-emails', 'plugin-groups', 'plugin-toggle' ), 'ai' => array(), 'cms' => array( 'auto-post-scheduler', 'block-options', 'bookmark-card', 'browser-shots', 'bulk-actions-select-all', 'bulk-edit-categories-tags', 'bulk-edit-user-profiles-in-spreadsheet', 'carbon-copy', 'code-block-pro', 'iframe-block', 'ics-calendar', 'mammoth-docx-converter', 'nav-menu-roles', 'ninja-tables', 'post-draft-preview', 'post-type-switcher', 'simple-custom-post-order', 'simple-icons', 'sticky-posts-switch', 'term-management-tools', 'the-paste', 'ultimate-addons-for-gutenberg', 'wikipedia-preview', 'wp-sheet-editor-bulk-spreadsheet-editor-for-posts-and-pages' ), 'compliance' => array( 'avatar-privacy', 'complianz-gdpr', 'complianz-terms-conditions', 'really-simple-ssl' ), 'crm' => array( 'fluent-boards', 'fluent-booking', 'fluent-crm', 'fluentform', 'fluentforms-pdf', 'fluent-support' ), 'ecommerce' => array( 'woocommerce', 'woo-bulk-edit-products', 'woo-coupons-bulk-editor', 'woocommerce-gateway-gocardless', 'kadence-woocommerce-email-designer', 'pymntpl-paypal-woocommerce', 'woo-stripe-payment' ), 'lms' => array( 'tutor' ), 'media' => array( 'easy-watermark', 'enable-media-replace', 'image-copytrack', 'imsanity', 'media-file-renamer', 'safe-svg' ), 'seo' => array( 'burst-statistics', 'pretty-link', 'seo-by-rank-math', 'syndication-links', 'ultimate-410', 'webmention' ), 'setup' => array( 'kadence-starter-templates', 'wordpress-importer' ), 'social' => array( 'easy-video-reviews', 'social-engine', 'wp-social-reviews' ), 'speed' => array( 'disable-wordpress-updates', 'flying-analytics', 'flying-pages', 'flying-scripts', 'freesoul-deactivate-plugins', 'index-wp-mysql-for-speed', 'litespeed-cache', 'performant-translations', 'wp-optimize', 'wp-widget-disable' ), 'translation' => array( 'hreflang-manager-lite', 'performant-translations', 'translatepress-multilingual' ), 'advanced' => array( 'acf-better-search', 'advanced-custom-fields', 'ai-engine', 'code-snippets', 'favorites', 'remove-cpt-base', 'remove-old-slugspermalinks', 'yellow-pencil-visual-theme-customizer' ), 'debug' => array( 'debug-log-manager', 'gotmls', 'query-monitor', 'string-locator', 'user-switching', 'wp-crontrol' ) ); } // Add transient caching for plugin data function wp_allstars_get_cached_plugins($category) { $cache_key = 'wp_allstars_plugins_' . $category; $cached_data = get_transient($cache_key); if ($cached_data !== false) { return $cached_data; } return false; } function wp_allstars_set_cached_plugins($category, $data) { $cache_key = 'wp_allstars_plugins_' . $category; set_transient($cache_key, $data, 12 * HOUR_IN_SECONDS); } // Add AJAX endpoint for plugin list function wp_allstars_ajax_get_plugins() { check_ajax_referer('updates'); if (!current_user_can('install_plugins')) { wp_die(-1); } $category = isset($_GET['category']) ? sanitize_key($_GET['category']) : 'minimal'; require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; // Get our recommended plugins for this category $recommended_plugins = wp_allstars_get_recommended_plugins(); if (!isset($recommended_plugins[$category])) { wp_send_json_error('Invalid category: ' . $category); } // Try to get cached data first $cached_data = wp_allstars_get_cached_plugins($category); if ($cached_data !== false) { error_log('Using cached data for category: ' . $category); // Setup the list table with cached data $GLOBALS['tab'] = 'plugin-install'; $_REQUEST['tab'] = 'plugin-install'; $_REQUEST['type'] = 'plugin-install'; set_current_screen('plugin-install'); $wp_list_table = _get_list_table('WP_Plugin_Install_List_Table', array( 'screen' => 'plugin-install' )); // Override the items with our cached data $wp_list_table->items = $cached_data->plugins; $wp_list_table->set_pagination_args(array( 'total_items' => count($cached_data->plugins), 'per_page' => count($cached_data->plugins), )); ob_start(); $wp_list_table->display(); $html = ob_get_clean(); wp_send_json_success($html); return; } error_log('Fetching fresh data for category: ' . $category); error_log('Plugins to fetch: ' . implode(', ', $recommended_plugins[$category])); // If no cache, get fresh data try { $plugins = array(); // Only fetch plugins that are in our recommended list for this category foreach ($recommended_plugins[$category] as $slug) { try { error_log('Fetching plugin data for: ' . $slug); $plugin_data = plugins_api('plugin_information', array( 'slug' => $slug, 'fields' => array( 'short_description' => true, 'sections' => false, 'requires' => true, 'rating' => true, 'ratings' => false, 'downloaded' => true, 'last_updated' => true, 'added' => false, 'tags' => false, 'compatibility' => false, 'homepage' => true, 'versions' => false, 'donate_link' => false, 'reviews' => false, 'banners' => false, 'icons' => true, 'active_installs' => true, 'group' => false, 'contributors' => false, ) )); if (is_wp_error($plugin_data)) { error_log('Error fetching plugin data for ' . $slug . ': ' . $plugin_data->get_error_message()); } else { $plugins[] = $plugin_data; error_log('Successfully fetched data for: ' . $slug); } } catch (Exception $e) { error_log('Exception fetching plugin data for ' . $slug . ': ' . $e->getMessage()); continue; } } error_log('Total plugins fetched: ' . count($plugins)); // Create response object $res = (object) array( 'info' => array( 'page' => 1, 'pages' => 1, 'results' => count($plugins), ), 'plugins' => $plugins ); // Cache the results wp_allstars_set_cached_plugins($category, $res); // Setup the list table $GLOBALS['tab'] = 'plugin-install'; $_REQUEST['tab'] = 'plugin-install'; $_REQUEST['type'] = 'plugin-install'; set_current_screen('plugin-install'); $wp_list_table = _get_list_table('WP_Plugin_Install_List_Table', array( 'screen' => 'plugin-install' )); // Set the items directly $wp_list_table->items = $plugins; $wp_list_table->set_pagination_args(array( 'total_items' => count($plugins), 'per_page' => count($plugins), )); ob_start(); $wp_list_table->display(); $html = ob_get_clean(); wp_send_json_success($html); } catch (Exception $e) { error_log('Failed to fetch plugin data: ' . $e->getMessage()); wp_send_json_error('Failed to fetch plugin data: ' . $e->getMessage()); } } add_action('wp_ajax_wp_allstars_get_plugins', 'wp_allstars_ajax_get_plugins'); // Remove the old plugins API filter since we're handling everything in the AJAX endpoint remove_filter('plugins_api_result', 'wp_allstars_plugins_api_result'); // Clear plugin cache when plugins are updated, activated, or deactivated function wp_allstars_clear_plugin_cache() { $recommended_plugins = wp_allstars_get_recommended_plugins(); foreach (array_keys($recommended_plugins) as $category) { delete_transient('wp_allstars_plugins_' . $category); } } add_action('upgrader_process_complete', 'wp_allstars_clear_plugin_cache', 10, 0); add_action('activated_plugin', 'wp_allstars_clear_plugin_cache'); add_action('deactivated_plugin', 'wp_allstars_clear_plugin_cache'); add_action('deleted_plugin', 'wp_allstars_clear_plugin_cache'); add_action('update_option_active_plugins', 'wp_allstars_clear_plugin_cache'); // Add transient caching for theme data function wp_allstars_get_cached_theme() { $cache_key = 'wp_allstars_theme_kadence'; return get_transient($cache_key); } function wp_allstars_set_cached_theme($data) { $cache_key = 'wp_allstars_theme_kadence'; set_transient($cache_key, $data, 12 * HOUR_IN_SECONDS); } // Add AJAX endpoint for theme function wp_allstars_ajax_get_theme() { check_ajax_referer('updates'); if (!current_user_can('install_themes')) { error_log('WP ALLSTARS: User does not have permission to install themes'); wp_send_json_error('Permission denied'); return; } error_log('WP ALLSTARS: Starting theme fetch process'); try { error_log('WP ALLSTARS: Fetching theme data for kadence'); // Get theme data with minimal fields $theme_data = themes_api('theme_information', array( 'slug' => 'kadence', 'fields' => array( 'sections' => false, 'description' => true, 'rating' => true, 'ratings' => false, 'downloaded' => true, 'download_link' => true, 'last_updated' => true, 'homepage' => true, 'tags' => false, 'screenshot_url' => true, 'version' => true, 'requires' => true, 'requires_php' => true, 'active_installs' => true, 'author' => true, 'preview_url' => true, ) )); if (is_wp_error($theme_data)) { error_log('WP ALLSTARS Theme API Error: ' . $theme_data->get_error_message()); wp_send_json_error('Theme API Error: ' . $theme_data->get_error_message()); return; } error_log('WP ALLSTARS: Successfully fetched theme data'); // Format author data $author = ''; if (is_string($theme_data->author)) { $author = $theme_data->author; } elseif (is_array($theme_data->author)) { $author = isset($theme_data->author['display_name']) ? $theme_data->author['display_name'] : ''; } // Generate custom HTML for the theme ob_start(); ?>

name); ?>

exists()): ?>
getMessage()); error_log('WP ALLSTARS Theme loading exception trace: ' . $e->getTraceAsString()); wp_send_json_error('Theme loading error: ' . $e->getMessage()); } catch (Error $e) { error_log('WP ALLSTARS Theme loading error: ' . $e->getMessage()); error_log('WP ALLSTARS Theme loading error trace: ' . $e->getTraceAsString()); wp_send_json_error('Theme loading error: ' . $e->getMessage()); } } add_action('wp_ajax_wp_allstars_get_theme', 'wp_allstars_ajax_get_theme'); // Clear theme cache when themes are updated function wp_allstars_clear_theme_cache() { delete_transient('wp_allstars_theme_kadence'); } add_action('upgrader_process_complete', 'wp_allstars_clear_theme_cache', 10, 0); add_action('switch_theme', 'wp_allstars_clear_theme_cache'); // Add AJAX handler for theme activation function wp_allstars_activate_theme() { check_ajax_referer('updates'); if (!current_user_can('switch_themes')) { wp_send_json_error('Permission denied'); return; } $theme = isset($_POST['theme']) ? sanitize_text_field($_POST['theme']) : ''; if (empty($theme)) { wp_send_json_error('No theme specified'); return; } // Switch the theme switch_theme($theme); // Check if the switch was successful $active_theme = wp_get_theme(); if ($active_theme->get_stylesheet() === $theme) { wp_send_json_success(array( 'message' => 'Theme activated successfully', 'customize_url' => admin_url('customize.php') )); } else { wp_send_json_error('Failed to activate theme'); } } add_action('wp_ajax_wp_allstars_activate_theme', 'wp_allstars_activate_theme'); // Settings page HTML function wp_allstars_settings_page() { global $tabs; $active_tab = isset($_GET['tab']) ? $_GET['tab'] : 'general'; $active_category = isset($_GET['category']) ? $_GET['category'] : 'minimal'; // Clear cache and load required files if ($active_tab === 'recommended') { wp_allstars_clear_plugin_cache(); require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; wp_enqueue_script('plugin-install'); wp_enqueue_script('updates'); add_thickbox(); wp_enqueue_style('wp-allstars-admin', plugins_url('css/wp-allstars-admin.css', __FILE__)); } elseif ($active_tab === 'theme') { wp_allstars_clear_theme_cache(); require_once ABSPATH . 'wp-admin/includes/theme.php'; wp_enqueue_script('theme-install'); wp_enqueue_script('updates'); add_thickbox(); wp_enqueue_style('wp-allstars-admin', plugins_url('css/wp-allstars-admin.css', __FILE__)); } ?>

Version

%filename%, %post_id%, %postname%, %timestamp%, %date%, %year%, %month%, %day%

%filename%, %post_title%, %post_id%, %postname%, %timestamp%

Admin Columns Pro

Advanced admin columns management with sorting, filtering, and editing capabilities.

Learn More

Admin Menu Editor Pro

Customize the WordPress admin menu with advanced features and role management.

Learn More

Advanced Custom Fields PRO

Create custom fields and content types with advanced features and options.

Learn More

Advanced Database Cleaner PRO

Clean and optimize your WordPress database with advanced tools and automation.

Learn More

AI Engine (Pro)

Enhanced AI capabilities for content generation, analysis, and automation.

Learn More

Code Profiler Pro

Advanced performance monitoring and debugging tools for WordPress.

Learn More

Code Snippets Pro

Add and manage custom code snippets with advanced features and management tools.

Learn More

Comment Goblin

Advanced comment management and spam protection system.

Learn More

Complianz Privacy Suite

Complete GDPR/CCPA compliance solution with advanced features.

Learn More

Disable Bloat PRO

Advanced optimization for WordPress & WooCommerce with premium features.

Learn More

Fluent Suite Pro

Premium extensions for Fluent Forms, CRM, Support, and Booking.

Freesoul Deactivate Plugins PRO

Advanced plugin management with conditional loading and optimization.

Learn More

Kadence Suite

Premium Kadence products for enhanced design and functionality.

Link Whisper

AI-powered internal linking suggestions and management.

Learn More

Media File Renamer Pro

AI-Powered media file renaming for better SEO.

Learn More

Ninja Tables Pro

Advanced table creation and management with premium features.

Learn More

Rank Math SEO PRO

Advanced SEO tools and features for better search engine optimization.

Learn More

Really Simple SSL Pro

Advanced SSL management and security features.

Learn More

Scalability Pro

Advanced performance optimization and scaling tools.

Learn More

Social Engine Pro

Advanced social media scheduling and management.

Learn More

TaxoPress Pro

Advanced taxonomy and tag management tools.

Learn More

Tutor LMS Pro Suite

Premium LMS features including certificate builder.

WP Migrate

Professional WordPress migration and backup solution.

Learn More

WP Social Ninja Pro

Advanced social media integration and management tools.

Learn More

WP Ultimo

Complete solution for creating WordPress multisite networks.

Learn More

YellowPencil Pro

Advanced visual CSS style editor and customization tool.

Learn More