Creando un plugin para WordPress

Creando un plugin para WordPress parte 4: Integración con WordPress

En esta cuarta entrega vamos a ver cómo integrar nuestro plugin con WordPress. Cuando hablo de integración con WordPress me refiero a que nuestro plugin parezca que forma parte del ecosistema WordPress y cómo interactuar con las funciones propias del CMS.

Hooks: Action y Filters

WordPress dispone de Hooks (ganchos). Los Hooks son puntos dentro de las funciones o los templates de WordPress que nos permiten agregar nuestro propio código o modificar el comportamiento por defecto sin necesidad de tocar los archivos del core de WordPress. Los hay de dos tipos: Action y Filter

  • Action: Permite ejecutar nuestro propio código en un lugar específico dentro de la línea de tiempo de ejecución de WordPress. Es decir, cada vez que cargas la página se van ejecutando en cascada una serie de acciones, y WordPress nos permite inyectar nuestro código en un punto en concreto de esta línea. Puedes ver la línea de ejecución y el orden de los hooks de WordPress aquí.
  • Filter: Los filtros son parecidos. La diferencia es que nos permiten modificar un valor de una función y retornar ese valor modificado. Por ejemplo el filtro the_content nos permite coger ese valor, añadir o modificar algo y devolver ese valor modificado a la función original para que siga su curso.

También podemos crear nuestros propios Hooks. Si incluyes Hooks en tu plugin estarás dando libertad a un usuario que lo utilice para poder modificarlo y adaptarlo a sus necesidades sin necesidad de modificar el código fuente o crear su propio fork:

<?php

function markup_settings_menu() {?>
    Foo: <input id="foo" name="foo1" type="text" />
    Bar: <input id="bar" name="bar1" type="text" />
 
    <?php
    do_action( 'myplugin_after_form_settings' );
}

Con do_action() hemos creado ese punto de acceso dentro de nuestra función, y un usuario podría crear dentro del functions.php del tema o a través de otro plugin propio que extienda o modifique la funcionalidad del primero, su propia función que llame a ese Hook e interactúe con él:

<?php

function add_form_settings() {?>
    New 1: <input id="new_setting" name="new_settings" type="text" />
    New 2: <input id="new_setting2" name="new_setting2" type="text" />
<?php }
add_action( 'myplugin_after_form_settings', 'add_form_settings' );

Menús

Si tu plugin necesita de un área de administración y/o configuración en el back-end, WordPress pone a nuestra disposición una serie de funciones que nos permiten una perfecta integración: lo que decía antes, que nuestro plugin parezca que forma parte del propio WordPress.

  • Menús de primer nivel: con la función add_menu_page() podemos crear un menú lateral del primer nivel y ponerle el nombre que queramos, definir su icono, establecer qué roles de usuario tienen acceso a él, etc… Más información aquí.
  • Menús de segundo nivel: con la función add_submenu_page() podemos crear un elemento de menú de segundo nivel, dentro de una sección principal ya existente. Además disponemos de funciones concretas para agregar un elemento de segundo nivel dentro de los menús de escritorio, entradas, páginas, ajustes, herramientas, etc.. (add_dashboard_page(), add_posts_page(), add_media_page(), add_links_page(), add_pages_page(), add_comments_page(), add_theme_page(), add_plugins_page(), add_users_page(), add_management_page() ,add_options_page()). Más información aquí.

Con estas dos funciones obtendremos una perfecta integración del acceso a nuestro plugin en la navegación del back-end de WordPress.

Options/Settings API

Muy recomendable que eches un vistazo a estas APIs de WordPress que te permiten crear rápidamente páginas de configuración y/o ajustes para tu plugin. Entre otras cosas:

  • Consistencia visual
  • Robustez y mantenibilidad
  • ¡Menos trabajo!
    • Maneja el envío de formularios
    • Gestiona la persistencia de datos
    • Nonces automáticos
    • Sanitización

Más información aquí.

Manejo de información

En la medida de lo posible evita crear tablas nuevas o un modelo de datos nuevo. El modelo de datos de WordPress es muy flexible y te permite agregar nuevos tipos de datos (Custom Post Type) y añadir cualquier tipo de información adicional (Custom Fields) a ese tipo de datos.

Un ejemplo muy básico: Imagina que quieres crear una sección «Productos» donde aparecerá un listado de productos y cada producto tiene una imagen, un nombre, un precio y una talla. Podrías Registrar un Custom Post Type para lo básico (nombre, descripción, imagen destacada) y añadirle dos Custom Fields (precio y talla) sin necesidad de crear tablas nuevas. Recuerda: ¡No reinventes la rueda!

Por último ten en cuenta que WordPress es universal, y que tu plugin puede ser usado por un inglés, un italiano o un filipino. Es importante al menos que dejes tu plugin preparado para la internacionalización (i18n). Localiza cualquier cadena de texto literal de tu plugin (títulos, nombres, slugs, mensajes, cadenas de texto, etc). No hace falta que traduzcas el plugin a todos los idiomas, pero al menos que el plugin esté preparado para permitir a un usuario de otro idioma trabajarse la traducción a su lengua.

¿Te ha resultado útil esta información? 🍺

Si este post te ha resuelto un problema, invítame a un café o a una cerveza. Con este pequeño gesto me animas a seguir escribiendo.

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *:

  • El fin del tratamiento es únicamente la moderación de comentarios para evitar spam
  • La legitimación es tu consentimiento al comentar
  • No se comunicará ningún dato a terceros salvo por obligación legal
  • Tienes derecho al acceso, rectificación y eliminación de los comentarios