En este momento estás viendo Plugins (VIII) Crear un menú de nivel superior

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.

 

Deja una respuesta

Responsable » Miguel Ángel López Torralba
Finalidad » Contactar conmigo y enviarte mi contenido.
Legitimación » Tu consentimiento.
Destinatario » MailChimp, mi proveedor de email marketing, que está acogido al acuerdo de seguridad EU-US Privacy.
Derechos » Acceder, rectificar, limitar o suprimir tus datos cuando quieras.