id, $helix_pages, true ) ) { return; } // 1) Remove default WordPress admin menus when viewing Helix. remove_menu_page( 'index.php' ); // Dashboard. remove_menu_page( 'edit.php' ); // Posts. remove_menu_page( 'upload.php' ); // Media. remove_menu_page( 'edit.php?post_type=page' ); // Pages. remove_menu_page( 'edit-comments.php' ); // Comments. remove_menu_page( 'themes.php' ); // Appearance. remove_menu_page( 'plugins.php' ); // Plugins. remove_menu_page( 'users.php' ); // Users. remove_menu_page( 'tools.php' ); // Tools. remove_menu_page( 'options-general.php' ); // Settings. // Remove all admin menu separators. remove_all_admin_menu_separators(); }, 10 ); /** * Remove all admin menu separators. */ function remove_all_admin_menu_separators() { global $menu; if ( is_array( $menu ) ) { foreach ( $menu as $key => $item ) { // Check if menu item is a separator. if ( false !== strpos( $item[4], 'wp-menu-separator' ) ) { unset( $menu[ $key ] ); } } } } /** * Add WordPress Admin menu item conditionally. */ add_action( 'admin_menu', function () { global $pagenow; // Check if we're going to the Helix page by looking at the sanitized request. $page_requested = filter_input( INPUT_GET, 'page', FILTER_SANITIZE_URL ); $is_helix_request = ( 'admin.php' === $pagenow && ( 'helix' === $page_requested || strpos( $page_requested, 'helix-' ) === 0 ) ); $use_default_admin = get_option( 'helix_use_default_admin', false ); // Always show the WordPress Admin link when navigating to Helix, or when not in default admin mode. if ( $is_helix_request || ! $use_default_admin ) { // If this is a Helix request, ensure we're in Helix mode. if ( $is_helix_request ) { update_option( 'helix_use_default_admin', false ); } // Add Helix menu items. add_menu_page( 'Helix Posts', 'Posts', 'edit_posts', 'helix-posts', 'helix_posts_callback', 'dashicons-admin-post', 3 ); add_menu_page( 'Helix Users', 'Users', 'list_users', 'helix-users', 'helix_users_callback', 'dashicons-admin-users', 4 ); add_menu_page( 'Helix Settings', 'Settings', 'manage_options', 'helix-settings', 'helix_settings_callback', 'dashicons-admin-settings', 5 ); // Add a menu item to go back to default WordPress admin. add_menu_page( 'WordPress Admin', // Page title. 'WordPress Admin', // Menu title. 'read', // Capability. 'wordpress-admin', // Menu slug. 'wordpress_admin_callback', // Callback function. 'dashicons-wordpress', // Icon. 6 // Position (after Settings menu). ); } }, 1000 ); /** * Add custom Helix menu items (only when on Helix page). */ /* previous current_screen callbacks combined into the single handler above */ /** * Callback functions for custom menu items. */ function wordpress_admin_callback() { // Set the option to use default WordPress admin. update_option( 'helix_use_default_admin', true ); // Show a clean message and let the user navigate naturally. ?>

✓ Switched to WordPress Admin

You can now navigate to any WordPress admin page normally.

Go to Dashboard

Posts Users Settings

'; } /** * Callback function for Users menu item. */ function helix_users_callback() { echo '
'; } /** * Callback function for Settings menu item. */ function helix_settings_callback() { echo '
'; }