hosting_providers = $this->get_hosting_providers(); $this->server_info = $this->get_server_info(); } /** * Get the tab ID * * @return string The tab ID */ public function get_tab_id() { return $this->tab_id; } /** * Get the tab title * * @return string The tab title */ public function get_title() { return __('Hosting', 'seoprostack'); } /** * Get server information * * @return array Server information */ private function get_server_info() { global $wpdb; $server_info = array(); // PHP Version $server_info['php_version'] = array( 'label' => __('PHP Version', 'seoprostack'), 'value' => phpversion(), 'recommendation' => __('PHP 8.0 or higher recommended', 'seoprostack') ); // MySQL Version $server_info['mysql_version'] = array( 'label' => __('MySQL Version', 'seoprostack'), 'value' => $wpdb->db_version(), 'recommendation' => __('MySQL 8.0 or higher recommended', 'seoprostack') ); // Server Software $server_info['server_software'] = array( 'label' => __('Server Software', 'seoprostack'), 'value' => $_SERVER['SERVER_SOFTWARE'] ?? __('Unknown', 'seoprostack'), 'recommendation' => '' ); // PHP Memory Limit $memory_limit = ini_get('memory_limit'); $server_info['php_memory_limit'] = array( 'label' => __('PHP Memory Limit', 'seoprostack'), 'value' => $memory_limit, 'recommendation' => __('256M or higher recommended', 'seoprostack') ); // Max Upload Size $upload_max_filesize = ini_get('upload_max_filesize'); $server_info['upload_max_filesize'] = array( 'label' => __('Max Upload Size', 'seoprostack'), 'value' => $upload_max_filesize, 'recommendation' => __('64M or higher recommended', 'seoprostack') ); return $server_info; } /** * Get hosting providers * * @return array The hosting providers data */ private function get_hosting_providers() { return array( 'kinsta' => array( 'name' => 'Kinsta', 'description' => 'Premium WordPress hosting with excellent performance, security, and customer support.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://kinsta.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://kinsta.com/plans/' ) ) ), 'wpengine' => array( 'name' => 'WP Engine', 'description' => 'Managed WordPress hosting provider with solid performance and security features.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://wpengine.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://wpengine.com/plans/' ) ) ), 'siteground' => array( 'name' => 'SiteGround', 'description' => 'Popular WordPress hosting with good performance and customer support.', 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://www.siteground.com/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://www.siteground.com/wordpress-hosting.htm' ) ) ), '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' ) ) ) ); } /** * Get the tab description * * @return string The tab description */ public function get_description() { return __('Details about your current hosting environment and recommendations for improvement.', 'seoprostack'); } /** * Get additional hosting providers for specialized cases * * @return array Array of additional hosting providers */ private function get_additional_hosting_providers() { return array( 'closte' => array( 'name' => 'Closte', 'description' => 'Managed WordPress hosting with advanced performance optimization and auto-scaling.', 'features' => array( 'Auto-scaling architecture', 'Global CDN included', 'Advanced caching', 'Free SSL certificates' ), '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.', 'features' => array( 'One-click installation', 'Automatic updates', 'Built-in backups', 'SSL certificate management' ), '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.', 'features' => array( 'Free domain name', 'Managed WordPress features', 'LiteSpeed cache', 'Weekly backups' ), '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.', 'features' => array( 'Scalable cloud instances', 'Per-minute billing', 'Snapshots and backups', 'Global data centers' ), '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.', 'features' => array( 'Simplified hosting dashboard', 'Pre-optimized WordPress', 'Automated backups', 'Email hosting included' ), '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.', 'features' => array( 'Global CDN network', 'DDoS protection', 'Web application firewall', 'Performance optimization' ), '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.', 'features' => array( 'Advanced WordPress tools', 'Optimized for speed', 'Developer-friendly features', 'Smart caching system' ), '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.', 'features' => array( 'Extensive TLD selection', 'Domain privacy protection', 'Expert domain support', 'Bulk domain management' ), '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.', 'features' => array( 'Free WhoisGuard protection', 'Competitive domain pricing', 'Reliable hosting services', 'Excellent 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.', 'features' => array( 'Real-time monitoring', 'Performance metrics', 'Notification alerts', 'Detailed reports' ), 'button_group' => array( array( 'text' => 'Home Page', 'url' => 'https://updown.io/', 'primary' => true ), array( 'text' => 'Pricing', 'url' => 'https://updown.io/pricing' ) ) ) ); } /** * Render the tab content. */ public function render() { // Use the self-contained data $server_info = $this->server_info; $hosting_providers = $this->hosting_providers; echo '
; if (function_exists('wp_seoprostack_get_hosting_providers') && empty($GLOBALS['_wp_seoprostack_hosting_loaded'])) { // Optional: merge with any providers from the external function to ensure none are lost $external_providers = wp_seoprostack_get_hosting_providers(); $hosting_providers = array_merge($external_providers, $hosting_providers); $GLOBALS['_wp_seoprostack_hosting_loaded'] = true; } ?>

get_description()); ?>

get_status_icon($server_info['php_status']); ?>
get_status_icon($server_info['mysql_status']); ?>
get_status_icon($server_info['wp_status']); ?>
get_status_icon($server_info['memory_status']); ?>
seconds get_status_icon($server_info['execution_status']); ?>

$provider) : ?>
=') ? 'good' : (version_compare($php_version, '7.0', '>=') ? 'warning' : 'bad'); $php_note = version_compare($php_version, '7.4', '>=') ? __('Your PHP version is up to date.', 'seoprostack') : __('We recommend PHP 7.4 or higher for optimal performance and security.', 'seoprostack'); // MySQL version $mysql_version = $wpdb->db_version(); $mysql_status = version_compare($mysql_version, '5.6', '>=') ? 'good' : 'warning'; $mysql_note = version_compare($mysql_version, '5.6', '>=') ? __('Your MySQL version is sufficient.', 'seoprostack') : __('We recommend MySQL 5.6 or higher for better performance.', 'seoprostack'); // WordPress version $wp_version = get_bloginfo('version'); $wp_status = version_compare($wp_version, '5.8', '>=') ? 'good' : (version_compare($wp_version, '5.5', '>=') ? 'warning' : 'bad'); $wp_note = version_compare($wp_version, '5.8', '>=') ? __('Your WordPress version is up to date.', 'seoprostack') : __('We recommend updating to the latest version of WordPress.', 'seoprostack'); // Memory limit $memory_limit = ini_get('memory_limit'); $memory_limit_bytes = wp_convert_hr_to_bytes($memory_limit); $memory_status = $memory_limit_bytes >= 256 * 1024 * 1024 ? 'good' : ($memory_limit_bytes >= 128 * 1024 * 1024 ? 'warning' : 'bad'); $memory_note = $memory_limit_bytes >= 256 * 1024 * 1024 ? __('Your memory limit is sufficient.', 'seoprostack') : __('We recommend a memory limit of at least 256MB.', 'seoprostack'); // Max execution time $max_execution_time = ini_get('max_execution_time'); $execution_status = $max_execution_time >= 180 || $max_execution_time == 0 ? 'good' : ($max_execution_time >= 60 ? 'warning' : 'bad'); $execution_note = $max_execution_time >= 180 || $max_execution_time == 0 ? __('Your max execution time is sufficient.', 'seoprostack') : __('We recommend a max execution time of at least 180 seconds.', 'seoprostack'); return array( 'php_version' => $php_version, 'php_status' => $php_status, 'php_note' => $php_note, 'mysql_version' => $mysql_version, 'mysql_status' => $mysql_status, 'mysql_note' => $mysql_note, 'wp_version' => $wp_version, 'wp_status' => $wp_status, 'wp_note' => $wp_note, 'memory_limit' => $memory_limit, 'memory_status' => $memory_status, 'memory_note' => $memory_note, 'max_execution_time' => $max_execution_time, 'execution_status' => $execution_status, 'execution_note' => $execution_note ); } /** * Get a status icon based on the status. * * @param string $status Status (good, warning, or bad). * @return string Status icon HTML. */ private function get_status_icon($status) { switch ($status) { case 'good': return ''; case 'warning': return ''; case 'bad': return ''; default: return ''; } } }