Plugins (VIII) Crear un menú de nivel superior

Al crear un plugin en wordpress tenemos dos formas de crearle un menú personalizado, la que vamos a ver en esta entrada es la primera de ellas,  crear un menú de nivel superior o como veremos próximamente, ampliando un menú existente.

El método de crear un menú de nivel superior resulta muy interesante cuando vamos a proceder a realizar un plugin que requiere múltiples páginas de configuración. Para proceder a ello necesitamos utilizar la función add_menu_page y cuya sintaxis es:

<?php add_menu_page(titulo_pagina, titulo_menu, capbility, menu_slug, funcion, icon_url, posicion); ?>

Donde:

  • titulo_pagina: Texto utilizado para el titulo HTML entre las etiquetas title
  • titulo_menu: Titulo que va a utilizarse para el nombre del menú en el escritorio
  • capability: Nivel del usuario mínimo necesario para ver el menú.
  • menu_slug: Nombre de slug exclusivo del menú.
  • funcion: Muestra el contenido para la página de ajustes del menú.
  • icon_url: Marca la ruta a icono personalizado para el menú (por defecto es images/generic.png)
  • posicion: Posición del menú en el orden de menús. Por defecto aparece al final.

Podemos crear elementos de submenú para nuestro menú utilizando add_submenu_page de la siguiente forma:

add_submenu_page(padre, pag_title, menu_title, capability, menu_slug, [funcion]);

De esta manera no es muy difícil el poder crear nuestros menús para nuestros plugins… que supongo a muchos era algo que les habrá dado tantos dolores de cabeza como a mi cuando estaba empezando, pero como vemos en el siguiente ejemplo es muy sencillo de conseguir…

//preparamos la accion para que cargue la función 
add_action ('admin_menu', 'prowp_crear_menu');
//hacemos la función que cargará el menú
function prowp_crear_menu(){
  //creamos el menú de nivel superior
  add_menu_page('Plugin censurador de Palabrotas', 'Plugin de palabrotas', 'manage_options', 'prowp_main_menu', 'prowp_main_plugin_page', plugins_url('/images/icono.png', __FILE__));
  //creamos dos submenus
  add_submenu_page('prowp_main_menu', 'Configurar Palabrotas', 'settings', 'manage_options', 'palabrotas_settings', 'prowp_settings_page');
  add_submenu_page('prowp_main_menu', 'Página de soporte', 'Soporte', 'manage_options', 'palabrotas_soporte', 'prowp_support_page'); 
}

Lo cual nos da como resultado, la imagen que aparece a continuación:

menuplugin

No he podido resistirme a poner como icono el favicon de YO, ¿por que será?

 

¿Pero, cómo funciona esto?

Pues en primer lugar se invoca a la acción admin_menu que desencadena una vez que esta establecida la estructura básica de menús del panel de administración y tras ello nuestra función personalizada prowp_crear_menu().

Una vez dentro de esta función ya empieza la magia, aunque lo único que hemos hecho es seguir los pasos descritos anteriormente;

  • los dos primero parámetros describen el titulo de la página y el nombre del menú
  • se establece el nivel de acceso (manage_options) es solo para que accedan los administradores
  • se establece el slug exclusivo del menú; prowp_main_menu
  • se introduce la función que llamará al ejecutarse (aun no definida)
  • la url del icono del menú que queremos que aparezca

Tras la creación del menú principal, desarrollamos dos menús secundarios utilizando la función add_submenu_page() donde:

  •  enviamos el slug de menú del nivel superior, indicando de esta manera quien es el padre
  • se establece un título de página y el título del menú
  • se vuelve a poner el nivel de acceso (manage_control)
  • se crea un slug exclusivo para el submenú
  • se invoca a la función personalizada para generar la página de ajustes de cada menú.

De esta forma es como podemos ir creando los menús y submenús para nuestros plugins.

En la próxima entrada de Curso de WP haremos el menú a partir de un menú ya existente.

Espero que os haya servido de ayuda y no olvidéis dejar algún comentario.