fix: corregir estructura de menú para mostrar submenú Theme Options

- Cambiar menu slug principal a 'apus-theme-menu' (contenedor)
- Menú principal sin callback (solo contenedor del submenú)
- Submenú 'Theme Options' con slug 'apus-theme-settings' (página real)
- Actualizar hook en enqueue_assets a 'apus-theme_page_apus-theme-settings'
- Limpiar logs de debug

Ahora el menú 'Apus Theme' muestra correctamente el submenú desplegable con 'Theme Options'
This commit is contained in:
FrankZamora
2025-11-13 23:18:00 -06:00
parent 60b3992ca5
commit 77dd809e8c

View File

@@ -18,7 +18,7 @@ class APUS_Admin_Menu {
* Constructor
*/
public function __construct() {
add_action('admin_menu', array($this, 'add_menu_page'));
add_action('admin_menu', array($this, 'register_menu'));
add_action('admin_enqueue_scripts', array($this, 'enqueue_assets'));
}
@@ -26,16 +26,27 @@ class APUS_Admin_Menu {
* Registrar página de admin
* Crea menú de nivel superior en sidebar (NO dentro de Apariencia)
*/
public function add_menu_page() {
public function register_menu() {
// Menú principal de nivel superior (sin callback para que sea solo contenedor)
add_menu_page(
'Apus Theme Options', // Page title
'Apus Theme', // Page title
'Apus Theme', // Menu title
'manage_options', // Capability
'apus-theme-settings', // Menu slug
array($this, 'render_admin_page'), // Callback
'apus-theme-menu', // Menu slug (solo identificador, no página real)
'', // Sin callback = solo contenedor
'dashicons-admin-generic', // Icon (WordPress Dashicon)
61 // Position (61 = después de Appearance que es 60)
);
// Submenú "Theme Options" (primer y principal subitem)
add_submenu_page(
'apus-theme-menu', // Parent slug
'Theme Options', // Page title
'Theme Options', // Menu title
'manage_options', // Capability
'apus-theme-settings', // Menu slug (página real)
array($this, 'render_admin_page') // Callback
);
}
/**
@@ -53,8 +64,8 @@ class APUS_Admin_Menu {
* Encolar assets (CSS/JS)
*/
public function enqueue_assets($hook) {
// Solo cargar en nuestra página (toplevel = menú de nivel superior)
if ($hook !== 'toplevel_page_apus-theme-settings') {
// Solo cargar en nuestra página
if ($hook !== 'apus-theme_page_apus-theme-settings') {
return;
}