Un plugin es un paquete de código que le agrega funciones a WordPress sin tocar sus archivos originales. Un formulario, un botón para compartir, un ajuste que tu cliente pide: todo eso puede vivir en un plugin que instalas, activas y desactivas cuando quieras.
La buena noticia es que el plugin más pequeño cabe en un solo archivo. Aquí vas a ver qué necesitas, cómo crear el primero y qué hábitos te ahorran problemas después.
Lo que necesitas antes de empezar
- Bases de PHP: el lenguaje en el que está escrito WordPress. Te basta con saber qué son variables, funciones y condiciones.
- Algo de HTML y CSS: para lo que se ve en pantalla.
- Un editor de código: Visual Studio Code es gratuito y funciona muy bien con PHP.
- Un WordPress de prueba en tu computadora: nunca pruebes un plugin nuevo en un sitio real. Un error de PHP puede dejar la página en blanco.
Paso 1: monta tu WordPress local
Tienes tres opciones gratuitas:
- Local: una aplicación gratuita para Windows y macOS que monta un sitio de WordPress en tu computadora con un par de clics. Es la opción más sencilla si vas empezando.
- wp-env: la herramienta oficial del equipo de WordPress. Levanta un sitio con Docker, un programa que corre servidores aislados en tu computadora. Útil si ya usas Docker o Node.js.
- WordPress Playground: WordPress completo dentro del navegador, sin instalar nada. Ideal para pruebas rápidas, aunque lo que haces se pierde al cerrar la pestaña si no lo exportas.
También activa el modo de depuración, que hace que WordPress te muestre los errores en lugar de esconderlos. En el archivo wp-config.php de tu sitio de prueba cambia WP_DEBUG a true. Local y wp-env te facilitan este ajuste.
Paso 2: crea la carpeta y el archivo principal
Los plugins viven en wp-content/plugins. Crea ahí una carpeta con un nombre corto, en minúsculas y con guiones, por ejemplo mi-primer-plugin. Dentro, crea un archivo con el mismo nombre: mi-primer-plugin.php.
Ese archivo empieza con una cabecera: un comentario que WordPress lee para saber el nombre, la versión y el autor de tu plugin. Sin cabecera, WordPress no lo reconoce.
<?php
/**
* Plugin Name: Mi Primer Plugin
* Description: Agrega un aviso al final de cada entrada.
* Version: 1.0.0
* Requires at least: 6.5
* Requires PHP: 7.4
* Author: Tu Nombre
* License: GPL-2.0-or-later
* Text Domain: mi-primer-plugin
*/
// Evita que alguien abra este archivo directo desde el navegador
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
Guarda, entra al escritorio de WordPress y ve a Plugins. Tu plugin ya aparece en la lista. Actívalo: todavía no hace nada, pero ya existe.
Paso 3: entiende los hooks
Casi todo en WordPress funciona con hooks (ganchos), puntos donde WordPress te deja meter tu propio código. Hay dos tipos:
- Acciones (
add_action): “cuando pase esto, ejecuta mi función”. Por ejemplo, cuando se carga el pie de página o cuando se publica una entrada. - Filtros (
add_filter): “antes de mostrar este dato, déjame cambiarlo”. Recibes un valor, lo modificas y lo regresas.
Este ejemplo usa el filtro the_content para agregar un aviso al final de cada entrada. Agrégalo debajo de la cabecera:
add_filter( 'the_content', 'mpp_agregar_aviso' );
function mpp_agregar_aviso( $contenido ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$aviso = __( 'Gracias por leer. ¿Te sirvió? Compártelo.', 'mi-primer-plugin' );
$contenido .= '<p class="mpp-aviso">' . esc_html( $aviso ) . '</p>';
}
return $contenido;
}
Recarga cualquier entrada de tu sitio y verás el aviso al final. Fíjate en el prefijo mpp_ del nombre de la función: todas las funciones de WordPress y de los demás plugins comparten el mismo espacio, así que un prefijo único evita choques con otro plugin que tenga una función con el mismo nombre.
Paso 4: organiza tu plugin cuando crezca
Un solo archivo sirve para empezar. Cuando tu plugin crezca, una estructura común es esta:
mi-primer-plugin.php: la cabecera y la carga de lo demás.includes/: el código PHP separado por tema (ajustes, formularios, etc.).assets/: CSS, JavaScript e imágenes. Se cargan conwp_enqueue_styleywp_enqueue_script, nunca pegándolos a mano en el HTML.languages/: las traducciones.readme.txt: la descripción y el historial de cambios, obligatorio si lo subes a WordPress.org.
Dos funciones más que vas a usar pronto: register_activation_hook y register_deactivation_hook. Sirven para preparar o limpiar cosas cuando alguien activa o desactiva tu plugin, como crear una opción con valores iniciales.
Paso 5: hábitos de seguridad desde el primer día
Un plugin corre con los mismos permisos que WordPress, así que un descuido puede abrir una puerta a atacantes. Estas cinco reglas cubren la mayoría de los casos:
- Limpia lo que entra: todo lo que viene de un formulario o de la URL pásalo por funciones como
sanitize_text_field()antes de guardarlo. - Escapa lo que sale: antes de imprimir cualquier dato usa
esc_html(),esc_attr()oesc_url(), como en el ejemplo de arriba. - Revisa permisos: con
current_user_can()confirmas que quien hace la acción tiene derecho a hacerla. - Usa nonces: un nonce es una clave de un solo uso que confirma que un formulario salió de tu sitio y no de una página falsa. Se crean con
wp_nonce_field()y se revisan conwp_verify_nonce(). - Para la base de datos, usa lo que ya trae WordPress: las funciones de opciones y metadatos, o
$wpdb->prepare()si de plano necesitas consultas propias.
Paso 6: revisa, versiona y comparte
- Instala el plugin Plugin Check, del equipo de WordPress. Revisa tu código y te avisa de problemas de seguridad y de buenas prácticas.
- Guarda tu proyecto en Git y súbelo a GitHub. Así tienes historial de cambios y un respaldo.
- Cada vez que cambies algo, sube el número de
Versionen la cabecera. - Si lo vas a instalar en sitios de clientes, puedes darle actualizaciones automáticas con la librería gratuita Plugin Update Checker.
Lo que debes saber
- Nunca edites archivos del núcleo ni de otros plugins. Se pierden en la siguiente actualización. Para eso existen los hooks.
- Plugin o tema: si una función debe seguir funcionando aunque cambies de diseño, va en un plugin. Si solo tiene que ver con cómo se ve el sitio, va en el tema.
- Bloques: si quieres crear bloques propios para el editor, el siguiente paso es aprender algo de JavaScript y React. El comando oficial
npx @wordpress/create-blockte arma la estructura. - La referencia oficial es el Plugin Handbook de WordPress, en inglés. Ahí está la lista completa de hooks y funciones.
Empieza con algo pequeño que resuelva un problema tuyo o de un cliente. Tu primer plugin no tiene que ser perfecto: tiene que funcionar, ser seguro y enseñarte cómo piensa WordPress.