array( 'name' => 'Server Status', 'desc' => 'Useful statistics about the server OS, CPU, RAM, load average, memory usage, IP address, hostname, timezone, disk space, PHP, MySQL, caches, etc.', 'filename' => 'server-status.php', ), 'duplicate-post-littlebizzy' => array( 'name' => 'Duplicate Post', 'desc' => 'Easily duplicate (clone) any blog post, custom post, or page in WordPress which are then saved in Draft mode, saving you tons of time and headache.', 'filename' => 'duplicate-post.php', ), 'remove-query-strings-littlebizzy' => array( 'name' => 'Remove Query Strings', 'desc' => 'Removes all query strings from static resources meaning that proxy servers and beyond can better cache your site content (plus, better SEO scores).', 'filename' => 'remove-query-strings.php', ), ); // Initialization // --------------------------------------------------------------------------------------------------- /** * Create or retrieve instance */ public static function instance() { // Check instance if (!isset(self::$instance)) self::$instance = new NTFTHP_Admin_Suggestions; // Done return self::$instance; } /** * Constructor */ private function __construct() { // Check AJAX submit if (defined('DOING_AJAX') && DOING_AJAX) { add_action( 'wp_ajax_ntfhp_dismiss', array(&$this, 'dismiss')); // Admin area (except install or activate plugins page) } elseif (!in_array(basename($_SERVER['PHP_SELF']), array('plugins.php', 'plugin-install.php', 'update.php'))) { // Admin hooks add_action('admin_footer', array(&$this, 'admin_footer')); add_action('plugins_loaded', array(&$this, 'plugins_loaded')); } } /** * Footer script */ public function admin_footer() { ?>

404 To Homepage recommends the following free plugins:

missing = $this->get_missing_plugins(); if (empty($this->missing) || !is_array($this->missing)) return; // Notice action add_action('admin_notices', array(&$this, 'admin_notices')); } /** * Retrieve uninstalled plugins */ private function get_missing_plugins() { // Initialize $inactive = array(); // Check plugins directory $directories = array_merge(self::get_mu_plugins_directories(), self::get_plugins_directories()); if (!empty($directories)) { $required = array_keys($this->required); foreach ($required as $plugin) { if (!in_array($plugin, $directories)) $inactive[] = $plugin; } } // Check inactives if (empty($inactive)) return false; // Done return $inactive; } /** * Collects all active plugins */ private function get_plugins_directories() { // Initialize $directories = array(); // Plugins split directory $split = '/'.basename(WP_CONTENT_DIR).'/'.basename(WP_PLUGIN_DIR).'/'; // Multisite plugins if (is_multisite()) { $ms_plugins = wp_get_active_network_plugins(); if (!empty($ms_plugins) && is_array($ms_plugins)) { foreach ($ms_plugins as $file) { $directory = explode($split, $file); $directory = explode('/', ltrim($directory[1], '/')); $directory = $directory[0]; if (!in_array($directory, $directories)) $directories[] = $directory; } } } // Active plugins $plugins = wp_get_active_and_valid_plugins(); if (!empty($plugins) && is_array($plugins)) { foreach ($plugins as $file) { $directory = explode($split, $file); $directory = explode('/', ltrim($directory[1], '/')); $directory = $directory[0]; if (!in_array($directory, $directories)) $directories[] = $directory; } } // Done return $directories; } /** * Retrieve mu-plugins directories */ private function get_mu_plugins_directories() { // Initialize $directories = array(); // Dependencies if (!function_exists('get_plugins')) require_once(ABSPATH.'wp-admin/includes/plugin.php'); // Retrieve mu-plugins $plugins = get_plugins('/../mu-plugins'); if (!empty($plugins) && is_array($plugins)) { foreach ($plugins as $path => $info) { $directory = dirname($path); if (!in_array($directory, array('.', '..'))) $directories[] = $directory; } } // Done return $directories; } /** * Plugin install/activate URL */ private function get_install_url($plugin) { // Check existing plugin $exists = @file_exists(WP_PLUGIN_DIR.'/'.$plugin); // Activate if ($exists) { // Existing plugin $path = $plugin.'/'.$this->required[$plugin]['filename']; return admin_url('plugins.php?action=activate&plugin='.$path.'&_wpnonce='.wp_create_nonce('activate-plugin_'.$path)); // Install } else { // New plugin return admin_url('update.php?action=install-plugin&plugin='.$plugin.'&_wpnonce='.wp_create_nonce('install-plugin_'.$plugin)); } } }