/** * Run plugin deactivation actions. * * @since 1.0.0 */ public static function deactivate() { // Get plugin and admin instances. $plugin = Auto_Menu_From_Pages::get_instance(); $plugin_admin = Auto_Menu_From_Pages_Admin::get_instance($plugin); // Force destruction of auto menu on deactivation. // $plugin_admin->destroy_auto_menu(); }
/** * Run plugin activation actions. * * @since 1.0.0 */ public static function activate() { // Get plugin and admin instances. $plugin = Auto_Menu_From_Pages::get_instance(); $plugin_admin = Auto_Menu_From_Pages_Admin::get_instance($plugin); // Force initial menu creation/update run. $plugin_admin->create_auto_menu(); $plugin_admin->maybe_sync_auto_menu(true); // Add plugin activation option for redirect. add_option($plugin->get('slug') . '_activated', true); }
/** * Creates or returns an instance of this class. * * @return Auto_Menu_From_Pages_Admin A single instance of this class. */ public static function get_instance($plugin) { if (null == self::$instance) { self::$instance = new self($plugin); } return self::$instance; }
/** * Register all of the hooks related to the dashboard functionality * of the plugin. * * @since 1.0.0 * @access private */ private function define_admin_hooks() { $plugin_admin = Auto_Menu_From_Pages_Admin::get_instance($this); // Do activation redirect. $this->loader->add_action('admin_init', $plugin_admin, 'do_activation_redirect'); // Create auto menu object. $this->loader->add_action('admin_init', $plugin_admin, 'create_auto_menu'); // Add functionality to dismiss notice. $this->loader->add_action('admin_init', $plugin_admin, 'dismiss_notice'); // Enqueue admin scripts and styles - both front- and back- end since it affects the admin bar. $this->loader->add_action('admin_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); $this->loader->add_action('wp_enqueue_scripts', $plugin_admin, 'enqueue_scripts'); // Add body class to distinguish auto menu admin page. $this->loader->add_action('admin_body_class', $plugin_admin, 'admin_body_class', 99); // Do admin notices. $this->loader->add_action('admin_notices', $plugin_admin, 'admin_notices'); // Create admin bar link. $this->loader->add_action('admin_bar_menu', $plugin_admin, 'create_admin_bar_link', 999); // Filter admin menu walker to prevent output in menu editor. $this->loader->add_filter('wp_edit_nav_menu_walker', $plugin_admin, 'filter_auto_menu_walker_to_hide', 10, 2); // Do metabox functionality to exclude page from auto menu. $this->loader->add_action('add_meta_boxes', $plugin_admin, 'add_metabox'); $this->loader->add_action('save_post', $plugin_admin, 'save_metabox'); // Synch menu via AJAX. $this->loader->add_action('wp_ajax_sync_auto_menu', $plugin_admin, 'force_sync_auto_menu'); /** * Auto sync menu on shutdown. * * By default, this feature is turned off, and can be enabled via the * amfp_auto_sync_menu filter. */ if (is_admin() && apply_filters('amfp_auto_sync_menu', false)) { $this->loader->add_action('shutdown', $plugin_admin, 'maybe_sync_auto_menu', 15); // Load after Exclude Pages plugin. } }