DownloadPHP WordPress Menu
English version
Agregar menú o submenús en WordPress.
Instalación
La mejor forma de instalar esta extensión es a través de composer.
Para instalar PHP WordPress Menu library, simplemente escribe:
$ composer require Josantonius/WP_Menu
El comando anterior sólo instalará los archivos necesarios, si prefieres descargar todo el código fuente (incluyendo tests, directorio vendor, excepciones no utilizadas, documentos...) puedes utilizar:
$ composer require Josantonius/WP_Menu --prefer-source
También puedes clonar el repositorio completo con Git:
$ git clone https://github.com/Josantonius/WP_Menu.git
Requisitos
Esta biblioteca es soportada por versiones de PHP 5.6 o superiores y es compatible con versiones de HHVM 3.0 o superiores.
Para utilizar esta biblioteca en HHVM (HipHop Virtual Machine) tendrás que activar los tipos escalares. Añade la siguiente ?ínea "hhvm.php7.scalar_types = true" en tu "/etc/hhvm/php.ini".
Cómo empezar y ejemplos
Para utilizar esta biblioteca, simplemente:
<?php
require __DIR__ . '/vendor/autoload.php';
use Josantonius\WP_Menu\WP_Menu;
Métodos disponibles
Métodos disponibles en esta biblioteca:
add($type, $data, $function, $styles, $scripts)
Agregar menu/submenu.
| Atributo | Descripción | Tipo de dato | Requerido | Por defecto
| --- | --- | --- | --- | --- |
| $type | 'menu' o 'submenu' | string | Sí | |
---
| Atributo | Clave | Descripción | Tipo de dato | Requerido | Por defecto
| --- | --- | --- | --- | --- | --- |
| $data | | Configuraciones | array | Sí | |
| | name | Nombre del menu/mubmenu | string | Sí | |
| | slug | Slug del menu/mubmenu | string | Sí | |
| | title | Título del menu/mubmenu | string | No | $data['name'] |
| | capability | Capacidad requerida | string | No | 'manage_options' |
| | icon_url | Solo para menús - La URL del icono que se utilizará para este menú. SVG codificado con base64 usando un URI de datos, el cual será coloreado para que coincida con la combinación de colores. Esto debería comenzar con' data: image/svg+xml; base64,'. Nombre de una clase de estilos de Dashicons para usar un icono de fuente, por ejemplo' dashicons-chart-pie'. None para dejar div.wp-menu-image empty como icono y que pueda ser añadido vía CSS. | string | No | '' |
| | position | Solo para menús - Orden en el que aparecerá el campo dentro del menú. | int | No | null |
| |parent | Solo para submenús - El nombre del slug para el menú principal | string | Sí | |
---
| Atributo | Descripción | Tipo de dato | Requerido | Por defecto
| --- | --- | --- | --- | --- |
| $function | Función a la que se llamará para imprimir la página | callable | No | false |
---
| Atributo | Descripción | Tipo de dato | Requerido | Por defecto
| --- | --- | --- | --- | --- |
| $styles | Función a la que se llamará para cargar estilos | callable | No | false |
---
| Atributo | Descripción | Tipo de dato | Requerido | Por defecto
| --- | --- | --- | --- | --- |
| $scripts | Función a la que se llamará para cargar scripts | callable | No | false |
@return ? Boolean
Uso
Ajustar parámetros del menú
$params = [
'slug' => 'searchinside-options',
'name' => __('Search Inside', 'search-iniside'),
'title' => __('Search Inside', 'search-iniside'),
'capability' => 'manage_options',
'icon_url' => '//searchinside-menu-admin.png',
'position' => 25,
];
Agregar menú
Añadir menú sin método asociado.
WP_Menu::add(
'menu',
$params
);
Agregar menú con método asociado para la salida.
WP_Menu::add(
'menu',
$params,
[$this, 'runPage']
);
Agregar menú con métodos de salida y estilos asociados.
WP_Menu::add(
'menu',
$params,
[$instance1, 'runPage'],
[$instance3, 'load_styles']
);
Agregar menú con métodos de salida, estilos y scripts asociados.
WP_Menu::add(
'menu',
$params,
[$instance1, 'runPage'],
[$instance3, 'load_styles'],
[$instance3, 'load_scripts']
);
Agregar menú con métodos de salida y scripts asociados.
WP_Menu::add(
'menu',
$params,
[$instance1, 'runPage'],
false,
[$instance3, 'load_scripts']
);
Ajustar parámetros de submenú
$params = [
'slug' => 'searchinside-options',
'parent' => 'searchinside-options',
'name' => __('Options', 'search-iniside'),
'title' => __('Options', 'search-iniside'),
'capability' => 'manage_options',
];
Agregar submenú
Agregar submenú sin método asociado:
WP_Menu::add(
'submenu',
$params
);
Agregar submenú con método asociado para salida:
WP_Menu::add(
'submenu',
$params,
[$this, 'runPage']
);
Agregar submenú con método asociado para salida y estilos:
WP_Menu::add(
'submenu',
$params,
[$instance1, 'runPage'],
[$instance3, 'load_styles']
);
Agregar submenú con método asociado para salida, estilos y scripts:
WP_Menu::add(
'submenu',
$params,
[$instance1, 'runPage'],
[$instance3, 'load_styles'],
[$instance3, 'load_scripts']
);
Agregar submenú con método asociado para salida y scripts:
WP_Menu::add(
'submenu',
$params,
[$instance1, 'runPage'],
false,
[$instance3, 'load_scripts']
);
Ejemplo avanzado
class SampleClass {
public function __construct() {
add_action('wp_menu/pre_add_menu_page', [$this, 'beforeAddMenu']);
add_action('wp_menu/after_add_menu_page', [$this, 'afterAddMenu']);
add_action('wp_menu/pre_add_submenu_page', [$this, 'beforeAddSubmenu']);
add_action('wp_menu/after_add_submenu_page', [$this, 'afterAddSubmenu']);
}
public function runPage() {
echo 'Respuesta desde el método runPage';
}
public function addStyles() {
echo 'Respuesta desde el método addStyles';
}
public function addScripts() {
echo 'Respuesta desde el método addScripts';
}
public function beforeAddMenu() {
echo 'Respuesta desde la acción wp_menu/pre_add_menu_page';
}
public function afterAddMenu($hook_suffix) {
echo 'Respuesta desde la acción wp_menu/after_add_menu_page';
echo 'Hook suffix: ' . $hook_suffix;
}
public function beforeAddSubmenu() {
echo 'Respuesta desde la acción wp_menu/pre_add_submenu_page';
}
public function afterAddSubmenu($hook_suffix) {
echo 'Respuesta desde la acción wp_menu/after_add_submenu_page';
echo 'Hook suffix: ' . $hook_suffix;
}
}
$SampleClass = new SampleClass;
/
* Agregar menú
*/
$params = [
'slug' => 'plugin-options',
'name' => __('Plugin Name', 'plugin-slug'),
'title' => __('Plugin Title', 'plugin-slug'),
'capability' => 'manage_options',
'icon_url' => '//searchinside-menu-admin.png',
'position' => 25,
];
WP_Menu::add(
'menu',
$params,
[$SampleClass, 'runPage'],
[$SampleClass, 'addStyles'],
[$SampleClass, 'addScripts']
);
/
* Agregar submenú
*/
$params = [
'slug' => 'sub-plugin-options',
'parent' => 'plugin-options',
'name' => __('Plugin Name', 'plugin-slug'),
'title' => __('Plugin Title', 'plugin-slug'),
'capability' => 'manage_options',
];
WP_Menu::add(
'submenu',
$params,
[$SampleClass, 'runPage'],
[$SampleClass, 'addStyles'],
[$SampleClass, 'addScripts']
);
# Cuando se lanza do_action('admin_menu');
// Respuesta desde la acción wp_menu/pre_add_menu_page
// Respuesta desde la acción wp_menu/pre_add_submenu_page
// Respuesta desde la acción wp_menu/after_add_menu_page
// Respuesta desde la acción wp_menu/after_add_submenu_page
// Hook suffix: load-toplevel_page_plugin-options
// Hook suffix: plugin-name_page_sub-plugin-options
# Cuando se lanza do_action('toplevel_page_plugin-options');
// Se ejecuta solo si se accede a la página asociada a este menú.
// Respuesta desde el método runPage
# Cuando se lanza do_action('plugin-name_page_sub-plugin-options');
// Se ejecuta solo si se accede a la página asociada a este submenú.
// Respuesta desde el método runPage
# Cuando se lanza do_action('load-toplevel_page_plugin-options');
// Se ejecuta solo si se accede a la página asociada a este menú.
// Respuesta desde el método addStyles
// Respuesta desde el método addScripts
# Cuando se lanza do_action('load-plugin-name_page_sub-plugin-options');
// Se ejecuta solo si se accede a la página asociada a este submenú.
// Respuesta desde el método addStyles
// Respuesta desde el método addScripts
Action hooks
| Acción | Descripción | Parameters
| --- | --- | --- |
| wp_menu/pre_add_menu_page | Antes de agregar menú. |
| wp_menu/after_add_menu_page | Después de agregar menú. | $page Hook_suffix de la página resultante o false.
| wp_menu/pre_add_submenu_page | Antes de agregar submenú. |
| wp_menu/after_add_submenu_page | Después de agregar submenú. | $page Hook_suffix de la página resultante o false.
Tests
Para ejecutar las pruebas simplemente:
$ git clone https://github.com/Josantonius/WP_Menu.git
$ cd WP_Menu
$ bash bin/install-wp-tests.sh wordpress_test root '' localhost latest
$ phpunit
? Tareas pendientes
-
[x] Completar tests
-
[x] Mejorar la documentación
Contribuir
-
Comprobar si hay incidencias abiertas o abrir una nueva para iniciar una discusión en torno a un fallo o función.
-
Bifurca la rama del repositorio en GitHub para iniciar la operación de ajuste.
-
Escribe una o más pruebas para la nueva característica o expón el error.
-
Haz cambios en el código para implementar la característica o reparar el fallo.
-
Envía pull request para fusionar los cambios y que sean publicados.
Esto está pensado para proyectos grandes y de larga duración.
Repositorio
Los archivos de este repositorio se crearon y subieron automáticamente con Reposgit Creator.
Licencia
Este proyecto está licenciado bajo licencia MIT. Consulta el archivo LICENSE para más información.
Copyright
2017 Josantonius, josantonius.com
Si te ha resultado útil, házmelo saber :wink:
Puedes contactarme en Twitter o a través de mi correo electrónico.
|