Índice de contenidos

Añadir nuevo menú al administrador de WordPress

Durante el desarrollo de proyectos, plugins o themes, a menudo necesitamos añadir un nuevo menú al administrador de WordPress. Tenemos dos opciones:

  • Implementar código para añadir nuevo menú al administrador de WordPress.
  • Instalar un plugin que permita añadir un nuevo menú.

Añadir menú administrador WordPress con código

Para comprender los pasos que hemos de seguir en el desarrollo del código vamos a trabajar con un ejemplo básico. A medida que vayamos entendiendo la lógica del código ampliaremos las funciones del mismo.

Nuestro primer objetivo: Cómo crear un nuevo menú

El objetivo es añadir a nuestro administrador de WordPress un nuevo menú llamado: «Impresora»

Por ahora vamos a trabajar con el  archivo functions.php de nuestro tema. Avanzado este artículo aprenderemos a trabajar dentro de un plugin.

Abre tu página functions.php y añade el siguiente código:

Código para copiar
add_action('admin_menu', 'menu_impresora');

function menu_impresora() {
	add_menu_page('Menú impresora', 
	'Impresora', 
	'manage_options', 
	'menu_impresora', 
	'funciones_impresora','',3);
}

Guarda los cambios y actualiza tu página de administración de WordPress. Si todo es correcto en el administrador de wp, debajo del menú «Servicios» aparecerá un nuevo menú «Impresora». De momento sin ninguna función.

Nuevo menú administrador WP

Aclaraciones de código
add_action('admin_menu', 'menu_impresora');

La acción ‘admin_menu’ se utiliza para añadir submenús y menús adicionales en el panel de administración. Se pasa como parámetro el nombre de la función que se ejecutará para crear el menú: ‘menu_impresora’

Dentro de la función ‘menu_impresora’ invocamos a las diferentes funciones que indican si queremos crear un menú o submenú.

add_menu_page()

Hemos llamado a la función add_menu_page para crear un menú principal. Los parámetros de la función son:

add_menu_page( string $page_title, string $menu_title, string $capabilitystring $menu_slug, callable $function = », string $icon_url = »int $position = null )

Parámetros requeridos:

$page_title: Texto que se verá en el título de la página cuando seleccionemos el menú.

$menu_title: texto de nuestro nuevo menú.

$capability: conjunto mínimo de capacidades del usuario que tendrá acceso al menú. Más información en el codex => Roles y Capacidades de usuario

$menu_slug: identificador del menú. 

Parámetros opcionales:

$function: función a ejecutar cuando pulsamos el menú.

$icon_url: icono que acompaña al menú. Más información y listado de iconos.

$position: en que posición queremos que aparezca el menú.

Segundo objetivo: Cargar página o función

En nuestro ejemplo el nuevo menú administración WordPress «Impresora» debe realizar alguna acción. Dentro de la función ‘menu_impresora’ hemos llamado a la función add_menu_page. Uno de los parámetros que hemos enviado ha sido $function (función a ejecutar cuando pulsamos el menú) con el valor ‘funciones_impresora’

Agregamos el siguiente código a functions.php:

function funciones_impresora() {
	if (!current_user_can('manage_options'))  {
		wp_die( __('No tienes suficientes permisos para acceder a esta página.') );
	}
	echo '<div class="wrap">';
	echo '<h2>Opciones de Impresora: Crea un documento .pdf con todos tus post</h2>';
	echo '<h3>Seleccione las características de creación del .pdf:</h3>';
	echo  '<form method="get" action="">
		   <p><input name="category" type="checkbox" />Ordenar por categorías</p>
		   <p><input name="date" type="checkbox" checked="checked" />Ordenar por fecha</p>
		   <p><input name="comment" type="checkbox" />Ordenar por número de comentarios</p>
		   </form>';
	echo '</div>';
}

El resultado al pulsar sobre el menú es el siguiente:

Nuevo menú administrador WordPress

En nuestro ejemplo hemos desarrollado todo el código dentro del archivo functions.php, este archivo se encuentra en la carpeta themes/tutema_activo. Sin embargo lo más habitual es que necesites trabajar con menús cuando crees tus propios plugins. Así que vamos a explicar como conseguir esto:

Menús en la creación de plugins WordPress

Cuándo creas un plugin en WordPress, lo normal, es que necesites agregar un menú con opciones o una página de información. El siguiente artículo te ayudará a crear tu propio plugin:

Crear plugin en WordPress – Programar tu primer Plugin

Puedes crear la siguiente estructura de archivos dentro de wp_content/plugins:

carpeta_mi_plugin: dentro dos archivos: mi_plugin.php donde copias el siguiente código:

add_action('admin_menu', 'menu_impresora');

function menu_impresora() {
	add_menu_page('Menú impresora', 
	'Impresora', 
	'manage_options', 
	'menu_impresora', 
	'funciones_impresora','',3);
}

function funciones_impresora() {
	if (!current_user_can('manage_options'))  {
		wp_die( __('No tienes suficientes permisos para acceder a esta página.') );
	}
	$file = file_get_contents('impresora.html', FILE_USE_INCLUDE_PATH);
    if($file == false)
    {
        echo 'No se encuentra el archivo impresora.html';
    }
    else
    {
        echo $file;
    }
}

impresora.html con el formulario html.

Creando submenús

En el código del primer ejemplo utilizábamos la función add_menu_page() para crear un menú. Si necesitas crear un submenú dentro de Herramientas, Escritorio, Ajustes, Post... debes emplear las siguientes funciones de WordPress:

Todas las funciones comparten los mismos parámetros. Todos los parámetros son obligatorios excepto $function, que es la función que se ejecutará al pulsar sobre el menú:
add_dashboard_page ( $page_title , $menu_title , $capability , $menu_slug , $function );

Submenú para Custom Post Type o Entrada Personalizada

En este ejemplo queremos crear un nuevo sub-menú Bloquear fechas dentro del menú de un Custom Post Type llamado reserva.

add_action('admin_menu' , 'submenu_custom_post_type'); 
 
function submenu_custom_post_type() {
    add_submenu_page('edit.php?post_type=reserva', 
                     'Bloquear fechas hotel', 
                     'Bloquear fechas', 
                     'edit_posts', 
                      basename(__FILE__), 
                     'funcion_bloquea_fechas');
}

Los parámetros de la función son:

<?php add_submenu_page($parent_slug, $page_title, $menu_title, $capability, $menu_slug, $function); ?>

 

La función add_submenu_page es similar a add_menu_page. La diferencia más significativa es el primer parámetro donde indicamos el “padre”, es decir, el menú del que desciende.

Añadir menú administrador WordPress instalando un plugin

En el próximo post instalaremos un plugin que nos permitirá añadir menús al administrador de WordPress.