Desarrollar tu propio plugin te permite personalizar WordPress exactamente como necesitas. Además, dominar esta habilidad abre nuevas oportunidades profesionales y mejora significativamente tus conocimientos sobre el funcionamiento interno de WordPress.
#Paso 1: Conocimientos previos y entorno de pruebas
Para empezar a crear un plugin de WordPress es necesario prepararse adecuadamente. Antes de sumergirnos en la programación, debemos asegurarnos de contar con los conocimientos básicos y un entorno de desarrollo seguro.
#¿Qué necesitas saber antes de empezar?
Aunque no necesitas ser un programador experto para crear tu primer plugin, existen algunos conocimientos fundamentales que facilitarán enormemente el proceso:
- Conocimientos básicos de WordPress: Entender cómo funciona esta plataforma te ayudará a comprender dónde encajan los plugins.
- Fundamentos de PHP: Este es el lenguaje de programación principal de WordPress. Necesitarás entender sus convenciones de nomenclatura y estructura de archivos.
- HTML, CSS y algo de JavaScript: Estos lenguajes te serán útiles, especialmente cuando quieras crear interfaces para tu plugin.
- Hooks de WordPress: Son esenciales para conectar tu código con el núcleo de WordPress sin modificarlo directamente.
- Nociones básicas de MySQL: Para trabajar con la base de datos cuando sea necesario.
No te preocupes si no dominas todos estos aspectos. A medida que avances en el desarrollo de plugins, irás adquiriendo nuevas habilidades naturalmente. Incluso los desarrolladores experimentados consultan recursos constantemente.
En cuanto a herramientas, necesitarás principalmente:
- Un buen editor de código como Visual Studio Code.
- Acceso a tu servidor para subir archivos cuando sea necesario.
#Cómo configurar un entorno local seguro
Una regla de oro: NUNCA desarrolles directamente en tu sitio web en producción. Un error en el código podría dejar tu web inaccesible y afectar a tus visitantes.
Para evitar estos riesgos, configura un entorno de pruebas. Existen varias opciones:
- Entorno local en tu computadora: Esta es la opción más segura para principiantes. Puedes usar herramientas como:
- Local WP: Una solución sencilla que configura automáticamente todo lo necesario.
- XAMPP o MAMP: Software de servidor que permite ejecutar WordPress localmente.
- Sitio de staging: Algunos proveedores de hosting ofrecen esta función que crea una copia exacta de tu sitio para realizar pruebas.
Para configurar rápidamente un entorno local con Local WP:
- Descarga e instala Local WP para tu sistema operativo.
- Haz clic en «Add Local site» y sigue el asistente.
- Elige un nombre para tu sitio y selecciona la opción «Preferred» si eres principiante.
- Configura tus credenciales de acceso (puedes usar algo sencillo como admin-admin).
- Espera a que se complete la instalación.
Posteriormente, conecta tu editor de código al sitio local para comenzar a desarrollar. En Visual Studio Code, simplemente arrastra la carpeta «public» de tu instalación al editor.
Para mayor seguridad, considera estas prácticas adicionales:
- Restringe el acceso a tu sitio de pruebas.
- Asegúrate de que los motores de búsqueda no indexen tu entorno de staging.
- Realiza copias de seguridad regularmente antes de implementar cambios importantes.
Con estos conocimientos previos y un entorno de desarrollo configurado correctamente, estarás listo para comenzar a crear tu primer plugin de WordPress de manera segura y eficiente.
#Paso 2: Crear la estructura básica del plugin
Una vez configurado el entorno de desarrollo, el siguiente paso fundamental es crear la estructura básica para tu plugin de WordPress. Esta fase establece los cimientos sobre los que construirás todas las funcionalidades.
#Elegir un nombre adecuado
La elección del nombre de tu plugin merece especial atención. No se trata solo de marketing, sino de practicidad y funcionalidad. Al seleccionar un nombre, considera estos aspectos:
- Debe ser único para evitar conflictos con otros plugins existentes
- Preferiblemente descriptivo de la función que realizará
- Puede contener varias palabras que definan claramente su propósito
Antes de decidir, verifica en los repositorios de WordPress y realiza búsquedas en Google para comprobar que el nombre no está ya en uso. Si tu plugin se relaciona con alguna funcionalidad específica, como el clima, podrías incluir esa palabra en su denominación.
#Crear la carpeta y archivo principal
Todos los plugins de WordPress deben alojarse dentro del directorio wp-content/plugins de tu instalación. Para estructurar correctamente tu plugin:
- Crea una nueva carpeta dentro de
wp-content/pluginscon el nombre elegido para tu plugin (por ejemplo:mi-plugin-ejemplo) - Dentro de esta carpeta, crea un archivo PHP con el mismo nombre (siguiendo el ejemplo:
mi-plugin-ejemplo.php)
Esta organización es fundamental porque WordPress buscará tus archivos siguiendo esta estructura estándar. Si tu plugin consta de múltiples archivos, lo recomendable es mantenerlos organizados en subcarpetas según su funcionalidad:
wp-content/plugins/mi-plugin-ejemplo/
├── mi-plugin-ejemplo.php (archivo principal)
├── includes/ (funciones)
├── admin/ (interfaz de administración)
├── css/ (estilos)
├── js/ (scripts)
Esta práctica no solo facilitará tu trabajo durante el desarrollo, sino también el mantenimiento futuro del plugin.
#Añadir la cabecera del plugin
Para que WordPress reconozca y pueda gestionar tu plugin, debes incluir una cabecera estándar al inicio del archivo PHP principal. Esta información aparecerá en el panel de Plugins del administrador de WordPress:
<?php
/*
Plugin Name: Nombre de Tu Plugin
Plugin URI: http://tu-sitio-web.com/plugin
Description: Una breve descripción de lo que hace tu plugin
Version: 1.0.0
Author: Tu Nombre
Author URI: http://tu-sitio-web.com
License: GPL2
*/De todos los campos, solo Plugin Name es obligatorio, aunque se recomienda completar el resto para proporcionar información útil a los usuarios. El campo «Version» resulta especialmente importante para el control de actualizaciones.
Después de la cabecera, muchos desarrolladores añaden una línea de seguridad para prevenir el acceso directo al archivo:
defined('ABSPATH') or die('¡Acceso no permitido!');Esta sentencia garantiza que el archivo solo se ejecute dentro del contexto de WordPress.
Una vez completados estos pasos, si accedes al panel de administración de WordPress y visitas la sección de Plugins, verás tu plugin listado, aunque aún no realice ninguna función. A partir de este punto, podrás comenzar a añadir las funcionalidades específicas que deseas implementar.
#Paso 3: Añadir funcionalidades con hooks
Los hooks son el corazón de cualquier plugin de WordPress, permitiéndote conectar tu código con el núcleo sin modificarlo directamente. Ahora que tienes la estructura básica, vamos a añadir funcionalidad real a tu plugin mediante estos «ganchos».
#Hooks de activación y desactivación
Cuando un usuario activa o desactiva tu plugin, es fundamental realizar ciertas acciones como configurar opciones iniciales o limpiar datos. Para esto, WordPress proporciona hooks específicos:
// Hook de activación
register_activation_hook(__FILE__, 'mi_funcion_de_activacion');function mi_funcion_de_activacion() {// Código a ejecutar cuando se active el plugin
add_option(‘mi_plugin_version’, ‘1.0’);
}
// Hook de desactivación
register_deactivation_hook(__FILE__, ‘mi_funcion_de_desactivacion’);
function mi_funcion_de_desactivacion() {
// Código a ejecutar cuando se desactive el plugin
// No elimina datos permanentemente
}
Un caso práctico: modificar capacidades de usuarios al activar tu plugin. Por ejemplo, si quieres permitir que los colaboradores suban imágenes:
function mi_plugin_add_caps_to_roles() {
global $wp_roles;
get_role('contributor');
$wp_roles->role_objects['contributor']->add_cap('upload_files');
}add_action(‘after_switch_theme’, ‘mi_plugin_add_caps_to_roles’, 10);
Para revertir estos cambios al desactivar el plugin:
function mi_plugin_remove_caps_to_roles() {
global $wp_roles;
get_role('contributor');
$wp_roles->role_objects['contributor']->remove_cap('upload_files');
}add_action(‘switch_theme’, ‘mi_plugin_remove_caps_to_roles’, 10);
#Agregar funciones personalizadas
Para añadir funcionalidad a WordPress, necesitas conectar tus funciones personalizadas usando hooks. La estructura básica es:
- Crear una función que realice la acción deseada
- «Enganchar» esa función a un punto específico de ejecución
Por ejemplo, para añadir un mensaje al pie de página del formulario de acceso:
function mi_plugin_login_footer_message() {
?>
<p style="border-top: 1px solid #0085ba; margin: 0 auto; width: 320px; padding-top: 10px;">
Utiliza tu correo corporativo para acceder.
</p>
<?php
}
add_action('login_footer', 'mi_plugin_login_footer_message');#Usar filtros y acciones de WordPress
WordPress utiliza dos tipos principales de hooks:
- Acciones: Te permiten hacer algo en puntos específicos de ejecución.
- Filtros: Te permiten modificar datos antes de que se muestren o procesen.
Para usar una acción:
add_action('nombre_del_hook', 'nombre_de_tu_funcion', prioridad, argumentos_aceptados);Para usar un filtro:
add_filter('nombre_del_filtro', 'nombre_de_tu_funcion', prioridad, argumentos_aceptados);Los parámetros adicionales:
- prioridad: Determina el orden de ejecución (por defecto 10, menor número = ejecución más temprana)
- argumentos_aceptados: Número de argumentos que acepta tu función
Por ejemplo, modificar el contenido de un post añadiendo una nota al final:
function mi_plugin_anadir_nota_final($content) {
if (is_single()) {
$content .= '<div class="post-footer">¿Te ha gustado? ¡Compártelo!</div>';
}
return $content;
}
add_filter('the_content', 'mi_plugin_anadir_nota_final');Otro ejemplo útil es personalizar mensajes del sistema:
function mi_plugin_personalizar_correo_nuevo_usuario($email) {
$email['subject'] = '¡Bienvenido a nuestra comunidad!';
$email['message'] = 'Hola, gracias por registrarte en nuestra web.';
return $email;
}
add_filter('wp_new_user_notification_email', 'mi_plugin_personalizar_correo_nuevo_usuario');Recuerda siempre que las funciones conectadas a filtros deben devolver un valor, mientras que las de acciones no necesitan hacerlo.
#Paso 4: Crear interfaz de administración
La mayoría de plugins necesitan una interfaz que permita a los usuarios configurar su funcionamiento según sus necesidades específicas. Esta parte del desarrollo es fundamental para ofrecer una buena experiencia de usuario y hacer tu plugin realmente útil.
#Añadir un menú en el panel de WordPress
Para que los usuarios accedan a las opciones de tu plugin, debes crear un menú en el panel de administración de WordPress. Existen dos métodos principales:
- Menú principal o top-level menu: Aparecerá directamente en el lateral del panel.
- Submenú: Se mostrará como opción dentro de un menú existente (como Ajustes o Herramientas).
Para añadir un menú principal, utiliza la función add_menu_page() durante el hook admin_menu:
add_action('admin_menu', 'mi_plugin_crear_menu');
function mi_plugin_crear_menu() {
add_menu_page(
‘Configuración de Mi Plugin’, // Título de la página
‘Mi Plugin’, // Texto del menú
‘manage_options’, // Capacidad requerida
‘mi-plugin-config’, // Slug único del menú
‘mi_plugin_pagina_opciones’, // Función callback
‘dashicons-admin-generic’, // Icono (opcional)
30 // Posición (opcional)
);
}
Si prefieres crear un submenú dentro de Ajustes, puedes usar add_options_page():
add_action('admin_menu', 'mi_plugin_crear_menu_opciones');
function mi_plugin_crear_menu_opciones() {
add_options_page(
‘Mi Plugin Settings’, // Título de la página
‘Mi Plugin’, // Texto del menú
‘manage_options’, // Capacidad requerida
‘mi-plugin-config’, // Slug único
‘mi_plugin_pagina_opciones’ // Función callback
);
}
#Diseñar una página de opciones
Una vez definido el menú, debes crear la función callback que mostrará el contenido de la página de opciones. La estructura básica incluye:
function mi_plugin_pagina_opciones() {
// Comprobar permisos
if (!current_user_can('manage_options')) {
wp_die('No tienes permisos suficientes para acceder a esta página.');
}
?>
<div class="wrap">
<h1><?php echo get_admin_page_title(); ?></h1>
<form method="post" action="options.php">
<?php
// Registramos los campos y secciones
settings_fields('mi_plugin_opciones');
do_settings_sections('mi-plugin-config');
submit_button('Guardar cambios');
?>
</form>
</div>
<?php
}Para organizar mejor tu interfaz, puedes dividirla en secciones utilizando la API de Settings:
add_action('admin_init', 'mi_plugin_inicializar_opciones');
function mi_plugin_inicializar_opciones() {
// Registrar sección
add_settings_section(
‘mi_plugin_seccion_general’,
‘Configuración General’,
‘mi_plugin_seccion_texto’,
‘mi-plugin-config’
);
// Añadir campos a la sección
add_settings_field(
‘mi_plugin_campo_texto’,
‘Texto de ejemplo’,
‘mi_plugin_renderizar_campo_texto’,
‘mi-plugin-config’,
‘mi_plugin_seccion_general’
);
// Función para mostrar texto descriptivo de la sección
function mi_plugin_seccion_texto() {
echo ‘<p>Configura los ajustes básicos de tu plugin.</p>’;
}
}
#Guardar configuraciones en la base de datos
Para almacenar las opciones de tu plugin, utiliza la Options API de WordPress junto con la función register_setting(). Esta función conecta los campos del formulario con las opciones guardadas en la base de datos:
function mi_plugin_inicializar_opciones() {
// Código anterior...// Registrar configuraciónregister_setting(
‘mi_plugin_opciones’, // Grupo de opciones
‘mi_plugin_campo_texto’, // Nombre de la opción
‘mi_plugin_sanitizar_texto’ // Función de sanitización
);
}
Es fundamental sanitizar siempre los datos antes de guardarlos para evitar problemas de seguridad:
function mi_plugin_sanitizar_texto($input) {
return sanitize_text_field($input);
}Para mostrar los campos en tu formulario, debes crear una función para cada uno:
function mi_plugin_renderizar_campo_texto() {
$valor = get_option('mi_plugin_campo_texto');
echo '<input type="text" name="mi_plugin_campo_texto" value="' . esc_attr($valor) . '" />';
}Finalmente, para recuperar las configuraciones desde cualquier parte de tu plugin:
$opciones = get_option('mi_plugin_campo_texto');Si tu plugin tiene muchas opciones, puedes guardarlas en un único array en la base de datos para reducir consultas:
$todas_opciones = array(
'mi_plugin_campo_texto' => sanitize_text_field($input['mi_plugin_campo_texto']),
'mi_plugin_checkbox' => isset($input['mi_plugin_checkbox']) ? 1 : 0,
);
update_option('mi_plugin_todas_opciones', $todas_opciones);Con estos elementos básicos, podrás crear interfaces administrativas efectivas que permitan a los usuarios configurar tu plugin según sus necesidades.
#Paso 5: Finalizar, probar y distribuir tu plugin
Una vez desarrolladas las funcionalidades principales de tu plugin, llega el momento de finalizar el proyecto, realizar pruebas exhaustivas y prepararlo para su distribución. Esta fase final es crucial para garantizar que tu creación funcione correctamente y pueda ser utilizada por otros.
#Crear el archivo uninstall.php
El archivo uninstall.php es fundamental para mantener limpia la base de datos cuando un usuario desinstala tu plugin. Este archivo debe colocarse en el directorio raíz de tu plugin y se ejecutará automáticamente durante el proceso de desinstalación.
Para proteger este archivo de accesos no autorizados, incluye este código al inicio:
<?php
if (!defined('WP_UNINSTALL_PLUGIN')) {
exit;
}Dentro de este archivo, añade el código necesario para eliminar todos los rastros de tu plugin:
// Eliminar opciones
delete_option('mi_plugin_opciones');// Eliminar tabla personalizadaglobal $wpdb;
$tabla = $wpdb->prefix . ‘mi_plugin_tabla’;
$wpdb->query(«DROP TABLE IF EXISTS {$tabla}«);
#Probar el plugin en diferentes entornos
Antes de distribuir tu plugin, es esencial realizar pruebas exhaustivas para identificar posibles errores. Algunos pasos recomendados:
- Prueba en diferentes versiones de WordPress
- Verifica la compatibilidad con diversos temas y plugins populares
- Utiliza el depurador de WordPress y la consola del navegador para detectar errores
Para facilitar este proceso, configura varios entornos de prueba que simulen diferentes configuraciones.
#Cómo empaquetar y compartir tu plugin
Para distribuir tu plugin, primero debes empaquetarlo correctamente:
- Asegúrate de que toda la documentación esté completa (README, instrucciones de uso)
- Comprime la carpeta principal de tu plugin en formato ZIP
- Si tu plugin es para uso personal, simplemente súbelo mediante el instalador de WordPress o FTP
Si deseas publicarlo en el repositorio oficial de WordPress, necesitarás crear una cuenta de desarrollador y seguir sus directrices específicas. Otra opción es venderlo en marketplaces especializados o distribuirlo desde tu propio sitio web.
Recuerda incluir instrucciones claras sobre la instalación y uso para facilitar la experiencia de tus usuarios.