/**
  * 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.
     }
 }