array( 'name' => 'Advise.so', 'description' => 'Website analytics and optimization tool for improving user experience and conversion rates.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://advise.so/', 'primary' => true ) ) ), 'seoutils' => array( 'name' => 'SEO Utils', 'description' => 'Collection of SEO tools to analyze and improve website search engine optimization.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://seoutils.app/', 'primary' => true ) ) ), 'dataforseo' => array( 'name' => 'DataForSEO', 'description' => 'API-based SEO data provider for rank tracking, keyword research and competitive analysis.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://dataforseo.com/', 'primary' => true ) ) ), 'ahrefs' => array( 'name' => 'Ahrefs', 'description' => 'Comprehensive SEO toolset for backlink analysis, keyword research, and competitor research.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://ahrefs.com/', 'primary' => true ) ) ), 'localrank' => array( 'name' => 'LocalRank.so', 'description' => 'Local SEO tool for tracking and improving local search rankings for businesses.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://localrank.so/', 'primary' => true ) ) ), 'turnithuman' => array( 'name' => 'Turn It Human', 'description' => 'AI content humanizer that makes AI-generated content sound more natural and authentic.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://turnithuman.com/', 'primary' => true ) ) ), 'searchconsole' => array( 'name' => 'Google Search Console', 'description' => 'Free tool from Google to monitor and troubleshoot your site\'s presence in Google Search results.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://search.google.com/search-console/about', 'primary' => true ) ) ), 'bingwebmaster' => array( 'name' => 'Bing Webmaster Tools', 'description' => 'Free tool from Microsoft to help optimize your website for Bing search engine.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.bing.com/webmasters/about', 'primary' => true ) ) ), 'fiverr' => array( 'name' => 'Fiverr', 'description' => 'Freelance services marketplace for businesses to find digital services including web development.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.fiverr.com/', 'primary' => true ) ) ), 'legiit' => array( 'name' => 'Legiit', 'description' => 'Marketplace for digital marketing services including SEO, content writing, and web design.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://legiit.com/', 'primary' => true ) ) ), 'openwebui' => array( 'name' => 'Open WebUI', 'description' => 'Open-source web interface for interacting with AI models and chatbots.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://openwebui.com/', 'primary' => true ) ) ), 'nextcloud' => array( 'name' => 'Nextcloud', 'description' => 'Self-hosted productivity platform and file sync solution for secure collaboration.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://nextcloud.com/', 'primary' => true ) ) ), 'enpass' => array( 'name' => 'Enpass', 'description' => 'Password manager that stores sensitive information locally on your device.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.enpass.io/', 'primary' => true ) ) ), 'pdfstudio' => array( 'name' => 'PDF Studio', 'description' => 'Professional PDF editor with advanced features for creating and modifying PDF documents.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.qoppa.com/pdfstudio/', 'primary' => true ) ) ), 'affinity' => array( 'name' => 'Affinity', 'description' => 'Professional creative software suite including Photo, Designer, and Publisher applications.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://affinity.serif.com/', 'primary' => true ) ) ), 'pixelmator' => array( 'name' => 'Pixelmator Pro', 'description' => 'Professional image editing software for Mac with powerful tools and an intuitive interface.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.pixelmator.com/pro/', 'primary' => true ) ) ), 'upscayl' => array( 'name' => 'Upscayl', 'description' => 'Open-source AI image upscaler that enhances and enlarges images with improved quality.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://upscayl.org/', 'primary' => true ) ) ), 'sitesucker' => array( 'name' => 'SiteSucker', 'description' => 'Website downloading tool that allows you to save entire websites for offline viewing.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://ricks-apps.com/osx/sitesucker/index.html', 'primary' => true ) ) ), 'virustotal' => array( 'name' => 'VirusTotal', 'description' => 'Free service that analyzes files and URLs for viruses, worms, trojans, and other malicious content.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.virustotal.com/', 'primary' => true ) ) ), 'transmit' => array( 'name' => 'Transmit', 'description' => 'File transfer client for macOS with support for FTP, SFTP, WebDAV, and cloud services.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://panic.com/transmit/', 'primary' => true ) ) ), 'iterm2' => array( 'name' => 'iTerm2', 'description' => 'Terminal emulator for macOS with advanced features beyond the default Terminal app.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://iterm2.com/', 'primary' => true ) ) ), 'cloudron' => array( 'name' => 'Cloudron', 'description' => 'Self-hosted platform that makes it easy to run web applications like WordPress on your server.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.cloudron.io/', 'primary' => true ) ) ), 'urlmonitor' => array( 'name' => 'URL Monitor', 'description' => 'Website monitoring service that tracks uptime, performance, and alerts you to issues.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://urlmonitor.com/', 'primary' => true ) ) ), 'speedyindex' => array( 'name' => 'Speedy Index', 'description' => 'Tool for monitoring website indexing speed and performance in search engines.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://en.speedyindex.com/', 'primary' => true ) ) ), 'pagespeed' => array( 'name' => 'PageSpeed Insights', 'description' => 'Google tool that analyzes web page performance on mobile and desktop devices.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://pagespeed.web.dev/', 'primary' => true ) ) ), 'windsurf' => array( 'name' => 'Codeium Windsurf', 'description' => 'AI-powered IDE with advanced code completion and generation capabilities.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://codeium.com/windsurf', 'primary' => true ) ) ), 'lowfruits' => array( 'name' => 'Low Fruits', 'description' => 'SEO tool for finding low-competition keywords to target for faster ranking.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://lowfruits.io/', 'primary' => true ) ) ), 'keysearch' => array( 'name' => 'Keysearch', 'description' => 'Affordable keyword research tool for finding valuable keywords for SEO.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.keysearch.co/', 'primary' => true ) ) ), 'smartlead' => array( 'name' => 'SmartLead', 'description' => 'Email outreach platform for cold email campaigns and lead generation.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.smartlead.ai/', 'primary' => true ) ) ), 'muraena' => array( 'name' => 'Muraena AI', 'description' => 'AI-powered writing assistant for creating and optimizing content.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://muraena.ai/', 'primary' => true ) ) ), 'googlebusiness' => array( 'name' => 'Google Business Profile', 'description' => 'Free tool to manage your business presence on Google Search and Maps.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://business.google.com/', 'primary' => true ) ) ), 'chatgptdetector' => array( 'name' => 'ChatGPT Detector', 'description' => 'Tool to detect AI-generated content from models like ChatGPT.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://textvisualization.app/chatgpt-detector/', 'primary' => true ) ) ), 'zerogpt' => array( 'name' => 'ZeroGPT', 'description' => 'AI content detector that identifies text generated by AI models.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://zerogpt.tools/', 'primary' => true ) ) ), 'zerogptplus' => array( 'name' => 'ZeroGPT Plus', 'description' => 'Advanced AI content detector with improved accuracy and additional features.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.zerogpt.plus/en', 'primary' => true ) ) ), 'neuronwriter' => array( 'name' => 'NeuronWriter', 'description' => 'AI-powered SEO content optimization tool for creating high-ranking content.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.neuronwriter.com/', 'primary' => true ) ) ), 'serposcope' => array( 'name' => 'Serposcope', 'description' => 'Open-source rank tracker to monitor website positions in search engines.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.serposcope.com/en/', 'primary' => true ) ) ), 'seoptimer' => array( 'name' => 'SEOptimer', 'description' => 'Website audit tool that provides SEO, usability, and performance recommendations.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.seoptimer.com/', 'primary' => true ) ) ), 'jitsi' => array( 'name' => 'Jitsi Meet', 'description' => 'Free, open-source video conferencing platform with no account required.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://meet.jit.si/', 'primary' => true ) ) ), 'appsumo' => array( 'name' => 'AppSumo', 'description' => 'Marketplace for discounted digital products and services for entrepreneurs.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://appsumo.com/', 'primary' => true ) ) ), 'screenstudio' => array( 'name' => 'Screen Studio', 'description' => 'Screen recording software with automatic editing and professional results.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://screen.studio/', 'primary' => true ) ) ), 'screenflow' => array( 'name' => 'ScreenFlow', 'description' => 'Professional screen recording and video editing software for macOS.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.telestream.net/screenflow/overview.htm', 'primary' => true ) ) ), 'acronis' => array( 'name' => 'Acronis Cyber Protect Connect', 'description' => 'Remote desktop and support solution for secure access to remote computers.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.acronis.com/en-us/products/cyber-protect-connect/', 'primary' => true ) ) ), 'espocrm' => array( 'name' => 'EspoCRM', 'description' => 'Open-source customer relationship management (CRM) application.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.espocrm.com/', 'primary' => true ) ) ), 'libreoffice' => array( 'name' => 'LibreOffice', 'description' => 'Free and open-source office suite compatible with Microsoft Office formats.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.libreoffice.org/', 'primary' => true ) ) ), 'localwp' => array( 'name' => 'Local', 'description' => 'Local WordPress development tool for creating WordPress sites locally.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://localwp.com/', 'primary' => true ) ) ), 'notability' => array( 'name' => 'Notability', 'description' => 'Note-taking app for iPad and Mac with handwriting and PDF annotation features.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://notability.com/', 'primary' => true ) ) ), 'ulysses' => array( 'name' => 'Ulysses', 'description' => 'Writing app for Mac, iPad, and iPhone with a clean interface and powerful features.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://ulysses.app/', 'primary' => true ) ) ) ); } // Define hosting providers function wp_allstars_get_hosting_providers() { return array( 'closte' => array( 'name' => 'Closte', 'description' => 'Managed WordPress hosting with advanced performance optimization and auto-scaling.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://closte.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://closte.com/pricing' ) ) ), 'cloudron' => array( 'name' => 'Cloudron', 'description' => 'Self-hosted platform that makes it easy to run web applications like WordPress on your server.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.cloudron.io/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.cloudron.io/pricing.html' ) ) ), 'hostinger' => array( 'name' => 'Hostinger', 'description' => 'Affordable WordPress hosting with good performance and user-friendly management tools.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.hostinger.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.hostinger.com/wordpress-hosting' ) ) ), 'hetzner' => array( 'name' => 'Hetzner Cloud', 'description' => 'High-performance cloud servers with excellent price-to-performance ratio for self-managed WordPress hosting.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.hetzner.com/cloud/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.hetzner.com/cloud#pricing' ) ) ), 'simplehost' => array( 'name' => 'SimpleHost', 'description' => 'Streamlined WordPress hosting with a focus on simplicity and performance.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://simplehost.so/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://simplehost.so/#pricing' ) ) ), 'cloudflare' => array( 'name' => 'Cloudflare', 'description' => 'Global cloud platform that provides CDN, security, and performance optimization services.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.cloudflare.com/en-gb/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.cloudflare.com/en-gb/plans/' ) ) ), 'spaceship' => array( 'name' => 'Spaceship', 'description' => 'Modern hosting platform with advanced features for WordPress sites.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.spaceship.com/', 'primary' => true ) ) ), '101domain' => array( 'name' => '101Domain', 'description' => 'Domain registration and management service with support for hundreds of TLDs.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.101domain.com/', 'primary' => true ) ) ), 'namecheap' => array( 'name' => 'Namecheap', 'description' => 'Domain registrar and web hosting provider with competitive pricing and good support.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.namecheap.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.namecheap.com/hosting/shared/' ) ) ), 'updownio' => array( 'name' => 'Updown.io', 'description' => 'Simple and affordable website monitoring service with uptime checks and performance metrics.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://updown.io/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://updown.io/pricing' ) ) ) ); } // Define recommended plugins function wp_allstars_get_recommended_plugins() { return array( 'minimal' => array( 'antispam-bee', 'compressx', 'fluent-smtp', 'kadence-blocks', 'simple-cloudflare-turnstile' ), 'admin' => array( 'admin-bar-dashboard-control', 'codepress-admin-columns', 'admin-menu-editor', 'hide-admin-notices', 'mainwp-child', 'mainwp-child-reports', 'magic-login', 'manage-notification-emails', 'plugin-groups', 'plugin-toggle' ), 'affiliates' => array( 'pretty-links', 'simple-urls', 'slicewp' ), 'ai' => array( 'ai-engine', ), '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-community', 'fluent-crm', 'fluentform', 'fluentforms-pdf', 'fluentform-block', '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( 'fluent-community', 'masterstudy-lms-learning-management-system', 'tutor' ), 'media' => array( 'easy-watermark', 'enable-media-replace', 'image-copytrack', 'imsanity', 'media-file-renamer', 'safe-svg' ), 'seo' => array( 'burst-statistics', 'pretty-link', 'revive-so', 'seo-by-rank-math', 'syndication-links', 'ultimate-410', 'webmention' ), 'setup' => array( 'kadence-starter-templates', 'wordpress-importer' ), 'social' => array( 'bit-social', 'easy-video-reviews', 'social-engine', 'wp-social-ninja', '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', 'automatorwp', 'bit-pi', 'bit-integrations', 'code-snippets', 'easy-code-manager', 'favorites', 'remove-cpt-base', 'remove-old-slugspermalinks', 'secure-custom-fields', 'yellow-pencil-visual-theme-customizer' ), 'debug' => array( 'advanced-database-cleaner', '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 nonce with the correct action name if (!check_ajax_referer('wp-allstars-nonce', '_wpnonce', false)) { wp_send_json_error('Invalid security token sent.'); return; } if (!current_user_can('install_plugins')) { wp_die(-1); } $category = isset($_POST['category']) ? sanitize_key($_POST['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); return; } // 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); try { // Generate plugin cards HTML $html = wp_allstars_generate_plugin_cards($cached_data->plugins); wp_send_json_success($html); return; } catch (Exception $e) { error_log('Error displaying cached plugins: ' . $e->getMessage()); // Fall through to fetch fresh data } } error_log('Fetching fresh data for category: ' . $category); error_log('Plugins to fetch: ' . implode(', ', $recommended_plugins[$category])); 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; } } if (empty($plugins)) { wp_send_json_error('No plugin data could be retrieved for category: ' . $category); return; } 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); // Generate plugin cards HTML $html = wp_allstars_generate_plugin_cards($plugins); 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'); // Function to generate plugin cards HTML function wp_allstars_generate_plugin_cards($plugins) { if (empty($plugins)) { return '
No plugins found.
short_description); ?>
" + response.data + "
Failed to load plugins. Please try again. Error: " + error + "
" + response.data + "
Failed to load themes. Please try again. Error: " + error + "