diff --git a/admin/class-adminsettings.php b/admin/class-adminsettings.php index 0c0572a..25a335b 100644 --- a/admin/class-adminsettings.php +++ b/admin/class-adminsettings.php @@ -16,27 +16,50 @@ class AdminSettings { * @return void */ public function __construct() { - add_action( 'admin_menu', array( $this, 'append_to_admin_menu' ), 12 ); + add_action( 'admin_menu', array( $this, 'add_admin_menu' ), 11 ); + add_action( 'admin_menu', array( $this, 'add_submenu_items' ), 12 ); add_action( 'admin_enqueue_scripts', array( $this, 'register_scripts' ) ); } /** - * Append to the admin menu (prevents doubling). + * Setting up the WordPress admin menu for this plugin. Also setting up + * a submenu item that will take the place of the main settings page. * * @since 1.0.0 * * @return void */ - public function append_to_admin_menu(): void { - $parent_slug = 'nmsp-plugin-name-menu-slug'; - $page_title = __( 'Namespace Plugin Name - Settings', 'nmsp_plugin_name_settings_title' ); - $menu_title = __( 'Settings', 'nmsp_plugin_name_settings_title' ); - $capability = 'manage_options'; - $menu_slug = $parent_slug; - $callback = array( $this, 'show_main_settings_page' ); + public function add_admin_menu(): void { + $page_title = __( 'Namespace Plugin Name - Settings', 'nmsp_plugin_name_settings_title' ); + $menu_title = __( 'Settings', 'nmsp_plugin_name_settings_title' ); + $capability = 'manage_options'; + $menu_slug = 'nmsp-plugin-name-menu-slug'; + $icon = plugins_url( '../assets/images/menu-icon.svg', __FILE__ ); + $position = 100; + $callback = array( $this, 'show_main_settings_page' ); - add_submenu_page( $parent_slug, $page_title, $menu_title, $capability, $menu_slug, $callback ); + add_menu_page( $page_title, $menu_title, $capability, $menu_slug, '', $icon, $position ); + add_submenu_page( $menu_slug, $page_title, $menu_title, $capability, $menu_slug, $callback ); + + } + + /** + * Append to the admin menu entry for this plugin. + * + * @since 1.0.0 + * + * @return void + */ + public function add_submenu_items(): void { + $parent_menu_slug = 'nmsp-plugin-name-menu-slug'; + $page_title = __( 'Namespace Plugin Name - Settings', 'nmsp_plugin_name_settings_title' ); + $menu_title = __( 'Settings', 'nmsp_plugin_name_settings_title' ); + $menu_slug = $parent_menu_slug; + $capability = 'manage_options'; + $callback = ''; + + add_submenu_page( $parent_menu_slug, $page_title, $menu_title, $capability, $menu_slug, $callback ); } /** diff --git a/includes/class-app.php b/includes/class-app.php index 080ec5d..5b26a89 100644 --- a/includes/class-app.php +++ b/includes/class-app.php @@ -113,28 +113,10 @@ class App { */ public function scaffold_plugin(): void { if ( is_admin() ) { - add_action( 'admin_menu', array( $this, 'add_admin_menu' ) ); + // admin only logic here } - } - /** - * Setting up the WordPress dashboard menu for this plugin. - * Setting this here to be overriden later so that a base is always available. - * - * @since 1.0.0 - * - * @return void - */ - public function add_admin_menu(): void { - $page_title = __( 'Namespace Plugin Name', 'nmsp_plugin_name_menu' ); - $menu_title = __( 'Namespace Plugin Name', 'nmsp_plugin_name_menu' ); - $capability = 'manage_options'; - $menu_slug = 'nmsp-plugin-name-menu-slug'; - $callback = ''; - $icon = plugins_url( '../assets/images/menu-icon.svg', __FILE__ ); - $position = 100; - - add_menu_page( $page_title, $menu_title, $capability, $menu_slug, $callback, $icon, $position ); + // other logic here } /**