Desvelando el desarrollo de complementos: construye tu primera extensión desde cero.

Lectura en 3 minutos
2026-03-11
2026-06-04
2,323
Gano comisiones cuando compras a través de los enlaces de abajo, sin coste adicional para ti.

Desvelando el desarrollo de complementos: construye tu primera extensión desde cero.

El encanto fundamental de WordPress radica en su gran capacidad de expansión. Al desarrollar plugins personalizados, los desarrolladores pueden agregar cualquier función que se necesite a un sitio web de manera sencilla y sin necesidad de modificar el código central, lo que garantiza la seguridad y la facilidad de las actualizaciones. Esta guía te guiará de manera sistemática a través del proceso básico de desarrollo de plugins para WordPress, así como las normas de arquitectura y las mejores prácticas.

Las bases fundamentales del desarrollo de plugins

Antes de empezar a escribir código, es de vital importancia comprender los conceptos básicos y la estructura estándar de los plugins de WordPress. Un plugin es, en esencia, uno o más archivos PHP que se empacan en un directorio y que contienen un archivo de comentarios de cabecera especial.

Estándares para el archivo principal de un plugin

Cada plugin debe tener un archivo PHP principal. Este archivo debe contener los encabezados de información estándar del plugin, para que WordPress pueda reconocerlo y gestionarlo. Estos encabezados se encuentran dentro de bloques de comentarios específicos. Por ejemplo, un plugin llamado… my-first-plugin.php El archivo puede contener lo siguiente:

Lecturas recomendadas Guía de introducción al desarrollo de temas de WordPress: crea tu primer tema desde cero.

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于演示的 WordPress 插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Esta información se mostrará directamente en la página de administración de “plugins” (complementos) del backend de WordPress. Entre ellas,Text Domain Y Domain Path Se utiliza para la internacionalización (i18n), lo que permite que el plugin sea compatible con múltiples idiomas.

Servidor de WordPress de UltaHost
Garantía de reembolso en 30 días, ancho de banda ilimitado y bases de datos, protección gratuita contra ataques DDoS; descuento del 50% al comprar por 3 años (versiones de 4 TB y 5 TB).

Directorio de plugins y organización de archivos

Un directorio de plugins bien estructurado no solo facilita el desarrollo y el mantenimiento, sino que también ayuda a los usuarios a comprender su funcionamiento. Se recomienda seguir el siguiente método de organización:

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

Esta estructura separada distingue claramente entre la lógica del backend, la lógica del frontend y los recursos comunes, lo que cumple con las mejores prácticas de desarrollo en WordPress.

Ampliar las funcionalidades utilizando ganchos (hooks) y filtros.

La API de plugins de WordPress se basa en los “ganchos” (hooks), que son el núcleo de su arquitectura basada en eventos. Existen dos tipos de ganchos: las acciones (actions) y los filtros (filters). Comprenderlos y utilizarlos de manera efectiva es clave para el desarrollo de plugins.

Uso de los ganchos de acción (Action Hooks)

Los ganchos de acción (action hooks) te permiten agregar código personalizado en momentos específicos durante el funcionamiento de WordPress. Por ejemplo, cuando se publica un artículo o cuando se inicializa el menú del administrador. Puedes utilizarlos para realizar tareas adicionales o modificar el comportamiento del sistema de manera conveniente. add_action() La función “monta” tu propia función en estos ganchos (hookes).

Lecturas recomendadas Guía técnica para la creación de sitios web: un análisis de todo el proceso, desde la planificación hasta la puesta en marcha

A continuación, se presenta un ejemplo sencillo para agregar una línea de texto personalizado en el pie de página de un sitio web. Primero, creamos una función en el archivo principal del plugin y luego la vinculamos (o la “montamos”) en el sitio web correspondiente. wp_footer Este accionador está conectado a un gancho.

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">¡Gracias por utilizar este complemento!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Cuando WordPress llega a… wp_footer Cuando se trata de la ubicación (generalmente en el tema)... footer.php Cuando se realiza la llamada (en el código), la función que hemos añadido se ejecutará.

Uso de los ganchos de filtro (filter hooks)

Los ganchos de filtro (filter hooks) se utilizan para modificar los datos que se transmiten en un proceso. Te permiten interceptar, verificar y alterar un valor antes de que sea utilizado por WordPress u otros plugins. add_filter() Se utiliza una función para aplicar el filtro.

hosting.com Alojamiento compartido
Alto rendimiento con CPU AMD EPYC, almacenamiento SSD NVMe y LiteSpeed, asistencia interna de expertos 24 horas al día, 7 días a la semana, medidas de seguridad avanzadas como SSL, fuerza bruta, protección contra malware y DDoS, ahorro de hasta 73%.

Por ejemplo, modificaremos la salida predeterminada del título de un artículo para agregar un prefijo específico antes de cada título. Montaremos la función en… the_title Está en ese gancho del filtro.

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

Los parámetros aquí mencionados… 10 Se trata de una cuestión de prioridad: cuanto menor es el número, más rápido se ejecuta la acción correspondiente.2 Esto indica que nuestra función acepta dos parámetros.$title Y $idLa función de filtro debe devolver el valor modificado.

Crear la página de administración de plugins

Muchos plugins requieren opciones de configuración en el backend de WordPress. Esto se suele lograr agregando páginas al menú de administración. WordPress ofrece una amplia gama de funciones para crear menús principales, submenús y páginas de opciones.

Lecturas recomendadas Tutorial completo: Mejora la tasa de conversión de ventas con plantillas personalizadas de páginas de productos en WooCommerce

Añadir menú de administración de nivel superior

Puedes usar add_menu_page() La función crea un elemento de menú independiente en el backend para tu plugin. Esta función requiere varios parámetros para definir el título de la página, el nombre del menú, los permisos necesarios, el identificador único del elemento de menú y la función de callback (que se ejecutará cuando se seleccione dicho elemento).

El siguiente código muestra cómo agregar una página de menú principal sencilla y asegurarse de que solo se muestre cuando un administrador accede al sitio.

Alojamiento compartido InterServer
Alojamiento compartido $2.50 USD al mes , primer mes $0.1 USD código promocional tryinterserver, 461 scripts de aplicaciones en la nube, instalación en un clic.
function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 权限能力(通常为管理员)
        'myplugin-settings',    // 菜单 Slug
        'myplugin_settings_page', // 显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用 Dashicons)
        30                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义设置页面的内容
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>¿¿¿¿php echo esc_html( get_admin_page_title() ); ?&gt;</h1>
        <form action="/es/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_options' ); // 输出安全字段
            do_settings_sections( 'myplugin-settings' ); // 输出设置区块
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Aquí,myplugin_settings_page La función se encarga de renderizar el contenido HTML de la página. En proyectos reales, se combinarán las configuraciones de WordPress con las API correspondientes.register_setting, add_settings_section, add_settings_field) para crear formularios que se puedan guardar.

Construir formularios y guardar configuraciones

Para manejar las entradas de los usuarios de manera segura y conforme a las normas, es necesario utilizar la API de configuraciones de WordPress. Esta API se encarga de la autenticación (no basada en cookies, es decir, no utiliza el protocolo CES), la validación de datos y el almacenamiento en la base de datos. Lo primero que se debe hacer es registrar una nueva opción de configuración, y luego agregar los campos correspondientes a dicha opción.

El siguiente ejemplo demuestra cómo registrar un campo de texto y guardar su valor.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

De esta manera, los datos enviados a través del formulario serán procesados. sanitize_text_field La función realiza la limpieza de los datos y, a continuación, los guarda automáticamente en la base de datos. wp_options En la tabla, el nombre de la clave es… myplugin_api_key

Asegurarse de la seguridad y el rendimiento de los plugins.

Al desarrollar plugins, la seguridad y el rendimiento son consideraciones fundamentales que no se pueden ignorar. Un plugin inseguro puede convertirse en una fuente de vulnerabilidades para todo el sitio web de WordPress.

Validación de datos y escape

Nunca debes confiar en los datos ingresados por los usuarios. Todos los datos provenientes de fuentes externas (como formularios, URL o bases de datos) deben ser verificados, limpiados y escapados antes de ser exhibidos o utilizados.

  • Verificación: Comprobar si los datos cumplen con el formato esperado (por ejemplo, si se trata de una dirección de correo electrónico o de un número).
  • Limpieza: Eliminar los caracteres o contenidos no permitidos de los datos (por ejemplo, quitar las etiquetas HTML).
  • Escape: Proceder al codificado de los datos antes de enviarlos a HTML, JavaScript o URL con el fin de prevenir ataques de tipo cross-site scripting (XSS).

WordPress ofrece una gran cantidad de funciones auxiliares, por ejemplo:
* sanitize_text_field():Limpia una cadena de texto.
* esc_html(): Evita la salida de código HTML en forma no procesada.
* esc_url(): Codificar una URL.
* wp_kses_post()Permite el uso de etiquetas HTML a través del filtro de contenido de los artículos.

Carga correcta de scripts y estilos

Para no afectar la velocidad de carga de la página y evitar conflictos, los archivos de JavaScript y CSS deben ser registrados y cargados de manera correcta utilizando los métodos proporcionados por WordPress. wp_enqueue_script() Y wp_enqueue_style() Función.

El código muestra cómo cargar los archivos JS y CSS exclusivos únicamente en la página de administración del propio plugin.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

Este método garantiza que los recursos se carguen solo cuando son necesarios y que las dependencias (como jQuery) se gestionen de manera correcta. Además, los parámetros de versión ayudan a administrar el caché del navegador.

resúmenes

El desarrollo de plugins para WordPress es un proceso sistemático que comienza por el respeto de la estructura de archivos estándar y de los encabezados de información (headers). La esencia de este proceso radica en el uso hábil de los ganchos (hooks) de acciones y filtros, para integrarse de manera no invasiva en el ciclo de vida de WordPress. Crear una interfaz de administración clara para el plugin y seguir estrictamente las API de configuración puede mejorar significativamente la experiencia del usuario y la seguridad de los datos. Finalmente, considerar la seguridad (verificación, limpieza de datos, escape de caracteres) y el rendimiento (carga de recursos según sea necesario) como principios fundamentales del desarrollo es la clave para crear plugins de alta calidad y confiables. Al seguir estos pasos y buenas prácticas, podrás crear extensiones para WordPress que sean potentes, seguras y fáciles de mantener.

FAQ Preguntas más frecuentes

¿Qué conocimientos básicos se necesitan para desarrollar plugins para WordPress?

Desarrollar plugins para WordPress requiere que estés familiarizado con el lenguaje de programación PHP, ya que los plugins están compuestos principalmente por código PHP. Además, es necesario tener un conocimiento básico de HTML, CSS y JavaScript para crear las interfaces y las interacciones del lado del usuario. Lo más importante es que comprendas la arquitectura básica de WordPress, en particular su sistema de ganchos (acciones y filtros), la estructura de los temas y las operaciones con la base de datos. WP_Query Y wpdb Clase).

¿Cómo depurar un plugin de WordPress que se está desarrollando?

El método más efectivo es el que tú has propuesto. wp-config.php Activa el modo de depuración de WordPress en el archivo. WP_DEBUG Los constantes se establecen en trueEsto mostrará en la página los errores, advertencias y notificaciones de PHP. También puedes utilizar… error_log() La función registra información de depuración personalizada en el registro de errores del servidor. Para un depurado más avanzado, se puede considerar utilizar herramientas de depuración de PHP específicas, como Xdebug.

¿Cómo deberían los plugins manejar las operaciones en la base de datos?

Para el almacenamiento de datos sencillos, se recomienda utilizar la API de opciones de WordPress.add_option, get_option, update_optionSe utilizan para almacenar datos en formato de pares de clave-valor. Para datos estructurados que requieren una definición personalizada de la tabla, puedes hacerlo al activar el complemento. dbDelta() Se trata de una función que permite crear o actualizar la estructura de una tabla de manera segura, lo cual implica seguir un formato SQL específico. Es esencial utilizarla. $wpdb El objeto global realiza todas las consultas a la base de datos y utiliza su método `prepare` para evitar ataques de inyección SQL.

¿Cómo puedo hacer que mi complemento admita la internacionalización en múltiples idiomas?

WordPress utiliza el framework GNU gettext para la internacionalización. Es necesario configurarlo correctamente en la sección de información del archivo principal del plugin. Text Domain Y Domain PathEn el código, todas las cadenas de texto que necesitan ser traducidas deben estar marcadas con el siguiente formato: __()(Usado para valores devueltos) o _e()(Se utiliza para envolver funciones de traducción directamente). Luego, se utiliza una herramienta como Poedit para escanear el código fuente y generar el contenido traducido. .pot El archivo de plantilla, y a partir de él, se crean las versiones en los diferentes idiomas. .po Y .mo Traduce el archivo y colócalo en el lugar especificado. Domain Path En el directorio.

Una vez que haya completado el desarrollo de mi plugin, ¿cómo puedo publicarlo en el directorio oficial?

En primer lugar, asegúrate de que tu plugin cumpla completamente con las instrucciones del oficial “Manual de Desarrollo de Plugins” y con los requisitos para su envío, incluyendo estándares de código, seguridad y el acuerdo de licencia (que debe ser compatible con GPL). Luego, crea una cuenta en WordPress.org y solicita enviar tu plugin. Una vez que sea aprobado, podrás utilizar Subversion para enviar el código del plugin al repositorio de código asignado por la plataforma. Después del envío, debes completar la página de descripción del plugin, incluyendo un banner, una imagen icónica, capturas de pantalla y una descripción detallada, para que los usuarios puedan verlo y descargarlo.