add_menu_page, add_submenu_page
Sintaxis add_menu_page()
La funció accepta set paràmetres, tots ells essencials per definir el nou menú:
add_menu_page(
$page_title,
$menu_title,
$capability,
$menu_slug,
$callback,
$icon_url,
$position
);
| Paràmetre | Tipus | Descripció | Exemple |
$page_title |
string | El títol que apareix a la pestanya del navegador quan la pàgina està oberta. | 'Configuració del meu Plugin' |
$menu_title |
string | El text que es mostra al menú lateral d'administració. | 'El meu Plugin' |
$capability |
string | El permís d'usuari mínim necessari per veure i accedir a aquest menú (rols). | 'manage_options' (per a Administradors) |
$menu_slug |
string | El nom únic que s'utilitza per identificar la pàgina a la URL. És crucial i ha de ser únic. | 'el-meu-plugin-config' |
$callback |
callable | La funció de PHP que conté l'HTML per mostrar el contingut real de la pàgina. | 'la_meva_funcio_de_contingut' |
$icon_url |
string | La URL de la icona a mostrar, o una icona de les Dashicons de WordPress. | 'dashicons-admin-generic' |
$position |
integer | Un número per controlar la posició on apareixerà el menú a la barra lateral. | 60 |
$capability (Permisos)
Aquest paràmetre és de seguretat. Defineix qui pot veure el menú. Has d'especificar una de les capacitats de WordPress.
-
read: Qualsevol usuari amb sessió iniciada. -
edit_posts: Usuaris que poden editar publicacions (Editors, Administradors). -
manage_options: Només Administradors (el més comú per a les opcions de configuració del plugin).
$menu_slug (Identificador únic)
Aquest slug es converteix en una part de l'URL de la vostra pàgina:
wp-admin/admin.php?page=**el-meu-plugin-config**
-
Importància: Si dos plugins intenten utilitzar el mateix slug, només un podrà registrar el menú. Sempre utilitza un prefix únic per al teu plugin (Ex:
bp-configuracio).
$callback (Funció de contingut)
Aquesta funció és el cor de la teva pàgina d'administració. Quan l'usuari clica al menú, WordPress executa aquesta funció i la sortida (l'HTML, el formulari, etc.) és el que es mostra a la pantalla.
$icon_url (Icona)
Hi ha tres opcions per definir la icona:
-
Dashicons (Recomanat): Utilitza el nom de classe CSS de qualsevol de les icones internes de WordPress (Ex:
dashicons-admin-settings,dashicons-star-filled). -
URL d'Imatge: Proporciona la URL completa d'un fitxer d'imatge (hauria de ser de 20x20 píxels).
-
Base64: Proporciona el codi Base64 d'una imatge.
$position (Posició)
Aquest número controla on apareixerà l'element de menú a la barra lateral, permetent-te ordenar-lo respecte als menús natius de WordPress:
| Posició | Menú Natiu |
| 5 | Sota Publicacions |
| 10 | Sota Mitjans |
| 20 | Sota Pàgines |
| 60 | Sota Apariència |
| 70 | Sota Plugins |
| 80 | Sota Usuaris |
| 100 | Sota Eines |
| 110 | Sota Configuració |
Si utilitzes un número ja ocupat, el teu menú es col·locarà just sota l'element natiu corresponent. Per exemple, usar 60 el posarà just a sota d'Apariència.
Exemple
Així és com utilitzaries l'acció admin_menu per registrar el teu menú:
function el_meu_plugin_registrar_menu() {
add_menu_page(
'Títol de la Pestanya', // $page_title
'El Meu Menú', // $menu_title
'manage_options', // $capability (Només Administradors)
'plugin-propi-slug', // $menu_slug
'la_meva_funcio_de_contingut', // $callback (Funció que mostrarà l'HTML)
'dashicons-star-filled', // $icon_url
51 // $position (Just sota 'Publicacions', que és 5)
);
}
// Enganxar la funció a l'acció admin_menu
add_action( 'admin_menu', 'el_meu_plugin_registrar_menu' );
// La funció que genera l'HTML de la pàgina
function la_meva_funcio_de_contingut() {
echo '<div class="wrap"><h1>Benvingut al meu Plugin!</h1></div>';
}
Sintaxis add_submenu_page()
Aquesta funció requereix vuit paràmetres, amb l'addició crucial del slug del menú pare:
add_submenu_page(
$parent_slug,
$page_title,
$menu_title,
$capability,
$menu_slug,
$callback,
$position
);
| Paràmetre | Tipus | Descripció | Exemple |
$parent_slug |
string | Crucial: El slug (identificador únic) del menú pare on s'ha d'adjuntar aquest submenú. | 'bp-configuracio' (el slug del teu menú pare) |
$page_title |
string | El títol que apareix a la pestanya del navegador. | 'Importar Dades del Banner' |
$menu_title |
string | El text que es mostra com a enllaç al menú desplegable. | 'Importar / Exportar' |
$capability |
string | El permís d'usuari mínim necessari per veure el submenú. | 'install_plugins' |
$menu_slug |
string | El nom únic per a aquest submenú, que esdevé la URL. Ha de ser diferent de $parent_slug. |
'bp-import-export' |
$callback |
callable | La funció de PHP que conté l'HTML que es mostrarà a la pàgina del submenú. | 'bp_pagina_importacio' |
$position |
integer | (Opcional) La posició relativa del submenú dins del menú desplegable. | 1 (el primer submenú) |
Exemple
Si el teu menú principal es diu bp-configuracio (creat amb add_menu_page), així és com li afegiries un submenú d'importació:
// Funció que s'executa amb el hook 'admin_menu'
function bp_afegir_submenus() {
// 1. REGISTRAR UN SUBMENÚ SOTA UN MENÚ PROPI
add_submenu_page(
'bp-configuracio', // $parent_slug: El menú pare que hem creat
'Importar Configuració', // $page_title
'Importar / Exportar', // $menu_title
'manage_options', // $capability
'bp-importar-exportar', // $menu_slug: Únic per a la nova pàgina
'bp_pagina_importacio' // $callback
);
// 2. REGISTRAR UN SUBMENÚ SOTA UN MENÚ NADIU DE WORDPRESS (EXEMPLE: EINES)
add_submenu_page(
'tools.php', // $parent_slug: El slug del menú natiu Eines
'Eina de Neteja del Banner',
'Neteja Banner',
'manage_options',
'bp-eina-neteja',
'bp_pagina_eina_neteja'
);
}
add_action( 'admin_menu', 'bp_afegir_submenus' );
// Funció que mostra el contingut de la pàgina d'importació
function bp_pagina_importacio() {
echo '<div class="wrap"><h1>Pàgina d\'Importació</h1><p>Aquí anirà el formulari d\'importació de dades.</p></div>';
}
Slugs dels menús natius:
Per adjuntar submenús a les seccions existents de WordPress, utilitza els seus slugs de fitxer (o URL):
| Menú Pare Natiu | $parent_slug a usar |
| Publicacions | edit.php |
| Pàgines | edit.php?post_type=page |
| Configuració | options-general.php |
| Eines | tools.php |
| El meu menú personalitzat | el-meu-slug-unic (el que vas definir a add_menu_page) |
Aquesta tècnica manté la interfície d'administració organitzada i evita sobrecarregar la barra lateral amb massa entrades de primer nivell.