Guía completa para el desarrollo de plugins para WordPress: Desde los principios hasta la práctica avanzada

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

Configuración del entorno de desarrollo para plugins de WordPress

Para comenzar a desarrollar plugins de WordPress, primero debe configurar un entorno de desarrollo local profesional. Esto no solo le permitirá realizar pruebas sin afectar su sitio web en línea, sino que también aumentará significativamente la eficiencia del desarrollo. Un entorno de desarrollo típico incluye un software de servidor local (como XAMPP, MAMP o Local by Flywheel), un editor de código (como VS Code o PHPStorm) y una instalación limpia de WordPress.

El documento de desarrollo principal es el archivo principal de tu plugin, cuyo nombre sigue reglas específicas. El archivo principal del plugin suele ser un archivo PHP, por ejemplo: my-first-plugin.phpEste archivo debe incluir ciertos comentarios de encabezado del plugin, que WordPress utiliza para identificar tu plugin. Un ejemplo de encabezado de plugin básico es el siguiente:

<?php
/**
 * Plugin Name: 我的第一个插件
 * Plugin URI:  https://example.com/my-first-plugin
 * Description: 这是一个简短的插件描述,用于在后台插件列表中显示。
 * Version:     1.0.0
 * Author:      你的名字
 * Author URI:  https://example.com
 * License:     GPL v2 or later
 * Text Domain: my-first-plugin
 */

Coloque el archivo que contiene el código anterior en el directorio de instalación de WordPress. /wp-content/plugins/ Luego, en la carpeta, y después de entrar en la página de “Plugins” del panel de control de WordPress, podrás ver y activar tu plugin. Aunque aún no tiene ninguna función, esto indica que el entorno de desarrollo se ha configurado correctamente.

Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: construya su primer complemento personalizado de cero a uno.

Comprender la estructura del directorio de plugins

A medida que la funcionalidad de los complementos se vuelve más compleja, puede resultar difícil mantener todo el código en un archivo principal. Por lo tanto, es fundamental establecer una estructura clara de archivos y directorios. Un directorio de complementos bien estructurado no solo facilita la colaboración en equipo, sino que también permite una expansión futura de la funcionalidad.

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).

Una estructura de catálogo de complementos de tamaño medio recomendada es la siguiente:
- my-plugin/ (Dirección raíz del plugin)
- my-plugin.php (Archivo principal del complemento, responsable de la orientación y la definición central)
- uninstall.php (El script de limpieza que se ejecuta al desinstalar el complemento)
- includes/ (Almacenar archivos de clases o funciones de funcionalidad central)
- admin/ (Almacenar el código relacionado con la interfaz de administración de fondo)
- public/ (Almacena el código del front end dirigido al usuario)
- assets/ (Almacenar recursos estáticos como CSS, JavaScript, imágenes, etc.)
- languages/ (Almacenar archivos de traducción internacionales .pot/.mo)

En el archivo principal my-plugin.php En este caso, normalmente defines las constantes del plugin (como la ruta y la URL del plugin) y luego las usas. require_once Las sentencias introducen archivos de funciones de otros directorios según sea necesario. Este enfoque modular permite una gestión ordenada del código.

Mecanismo central del complemento: ganchos y filtros.

La filosofía central del desarrollo de complementos de WordPress es el “gancho”. El mecanismo de ganchos te permite insertar tu propio código en momentos específicos sin modificar el código principal de WordPress, o bien, modificar los datos de salida de otras funciones. Los ganchos se dividen principalmente en dos categorías: acciones y filtros.

Los ganchos de acción te permiten ejecutar funciones personalizadas cuando ocurren eventos específicos. Por ejemplo, cuando se publica un artículo, cuando un usuario inicia sesión o cuando se carga el menú de fondo. Utiliza add_action() Los funciones pueden “montar” tu función de devolución de llamada en los ganchos de acción especificados.

Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: cree su primer módulo de funcionalidad extendida desde cero.

Los ganchos de filtro te permiten modificar los datos. En el proceso de WordPress, los datos (como el contenido del artículo, el título y el resumen) pasan por una serie de filtros antes de enviarse a la base de datos o al navegador. Puedes usar add_filter() Usamos una función para modificar estos datos.

¿Cómo agregar un hook de acción?

Supongamos que desea agregar automáticamente una declaración de derechos de autor al final de cada artículo. Esto requiere que se ejecute una acción después de que se renderice el contenido del artículo, pero, más precisamente, que se modifique el contenido del artículo, por lo que es más adecuado utilizar un filtro. Sin embargo, para demostrar los ganchos de acción, consideraremos enviar un correo electrónico al administrador cuando se publique el artículo.

En primer lugar, necesitas crear una función de devolución de llamada, por ejemplo: myplugin_notify_admin_on_publishLuego, utiliza… add_action() La función lo monta en… publish_post En este movimiento.

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%.
function myplugin_notify_admin_on_publish( $post_id, $post ) {
    // 获取管理员邮箱
    $admin_email = get_option( 'admin_email' );
    $subject = '新文章已发布:' . $post->post_title;
    $message = '您网站上的文章“' . $post->post_title . '”刚刚被发布。';
    // 发送邮件
    wp_mail( $admin_email, $subject, $message );
}
// 将函数挂载到 publish_post 动作钩子,优先级为10,接受2个参数
add_action( 'publish_post', 'myplugin_notify_admin_on_publish', 10, 2 );

¿Cómo agregar un hook de filtro?

Ahora, vamos a lograr nuestro objetivo inicial: agregar información de derechos de autor al final del contenido del artículo. Aquí necesitamos filtrar. the_content Estos datos.

function myplugin_add_copyright_to_content( $content ) {
    // Asegurarse de que solo se ejecute en la página de un artículo individual en el frontend del sitio web
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $copyright_text = '<p><em>El derecho de autor de este artículo pertenece a este sitio web. Si desea volver a publicarlo, debe indicar la fuente.</em></p>'if ( ! empty( $$content ) ) {  
     $$content .= $$copyright_text;  
    }  
    return $$content; // Es necesario devolver el contenido modificado.  
}
add_filter( 'the_content', 'myplugin_add_copyright_to_content' );

Comprender y utilizar los ganchos con soltura es clave para desbloquear la capacidad ilimitada de personalización de WordPress.

Crear una página de administración de complementos.

Muchos complementos necesitan ofrecer opciones de configuración a los usuarios, lo que generalmente se hace a través de la página del menú de administración en el panel de control de WordPress. WordPress ofrece una serie de funciones para agregar elementos de menú principales o secundarios, y para renderizar las páginas de configuración correspondientes.

Lecturas recomendadas Aprender a desarrollar plugins de WordPress desde cero: crear tu primera función personalizada.

Agregar un menú de administración de nivel superior.

utilizar add_menu_page() La función puede crear una entrada de menú de fondo independiente para tu complemento. Esta función requiere varios parámetros, que incluyen el título de la página, el título del menú, los permisos del usuario, el alias del menú, la función de devolución de llamada, etc.

El código siguiente muestra cómo agregar una página de menú principal simple:

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.
La función myplugin_add_admin_menu() agrega una nueva página de menú al panel de administración de WordPress.  

function myplugin_add_admin_menu() {
    add_menu_page(
        'Configuración de mi plugin',   // Título de la página
        'Mi plugin',   // Título del menú
        'manage_options',   // Permisos requeridos (administrador)
        'myplugin-settings',   // Nombre de la página (slug)
        'myplugin_render_settings_page',   // Función de callback para mostrar el contenido de la página
        'dashicons-admin-generic',   // Ícono (utilizando Dashicons)
        30   // Posición del menú
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// Función de callback para renderizar la página de configuración  
function myplugin_render_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
            // 输出设置字段、非ce等(需要先使用 settings_fields 和 register_setting)
            settings_fields( 'myplugin_options' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Simplemente crear una página no es suficiente; por lo general, necesitamos agregar campos de configuración que se puedan guardar en la página. Esto requiere el uso de la API de configuración de WordPress, que gestiona de forma segura el registro, la validación y el almacenamiento de las opciones.

Usar la API de configuración para registrar opciones.

La configuración de la API proporciona una manera estándar y segura de crear formularios que incluyan campos como cuadros de entrada y casillas de verificación, y de guardar los datos automáticamente en WordPress. wp_options En la tabla de datos.

En primer lugar, necesitas registrar una opción de configuración y, a continuación, agregar una zona de configuración y un campo.

function myplugin_settings_init() {
    // 注册一个新设置项 “myplugin_options”
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_settings', // 存储在wp_options表中的option_name
        'myplugin_sanitize_callback' // 可选的清理回调函数
    );

// 在页面 “myplugin-settings” 上添加一个区域
    add_settings_section(
        'myplugin_section_general',
        '通用设置',
        'myplugin_section_general_callback',
        'myplugin-settings'
    );

// 向该区域添加一个字段
    add_settings_field(
        'myplugin_field_footer_text',
        '页脚文本',
        'myplugin_field_footer_text_callback',
        'myplugin-settings',
        'myplugin_section_general',
        [ 'label_for' => 'myplugin_field_footer_text' ]
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 字段渲染回调函数
function myplugin_field_footer_text_callback() {
    $options = get_option( 'myplugin_settings' );
    $value = $options['footer_text'] ?? ''; // PHP 7.0+ 空合并运算符
    echo '<input type="text" id="myplugin_field_footer_text" name="myplugin_settings[footer_text]" value="' . esc_attr( $value ) . '" class="regular-text" />';
}

De esta forma, la página de fondo creada de esta manera, cuya validación, almacenamiento y seguridad de los datos están garantizados por el núcleo de WordPress, es la mejor práctica para desarrollar interfaces de administración de complementos.

Seguridad de los complementos y mejores prácticas.

Para desarrollar un complemento popular, además de ser potente, también es necesario garantizar que sea seguro, eficiente y fácil de mantener. Seguir las normas de codificación de seguridad es la responsabilidad primordial de proteger el sitio web del usuario contra ataques.

Verificación, limpieza y escape de datos.

Estas son las tres líneas de defensa de la seguridad de WordPress. En resumen: validación, que comprueba si los datos de entrada cumplen con el formato esperado (por ejemplo, si es una dirección de correo electrónico); limpieza, que elimina las partes inseguras o ilegales antes de que los datos se almacenen en la base de datos; y escape, que garantiza que los datos no se interpreten erróneamente como código ejecutable cuando se envían al navegador (HTML, JavaScript, URL).

  • Verificación: Utilizar funciones como is_email(), absint()
  • Limpieza: use funciones como sanitize_text_field(), sanitize_email(), wp_kses_post()(Se usa para permitir parte del contenido HTML).
  • Escape: utilizar funciones como esc_html()(Se muestra dentro del elemento HTML), esc_url()(Salida a la propiedad URL), esc_attr()(Se mostrará dentro de los atributos HTML), wp_kses()(Escapar selectivamente).

Nunca confíes en lo que ingresa el usuario. Al recibir datos (por ejemplo, de…) $_POST o $_GETSe debe realizar una limpieza y, al exportar los datos, es necesario escapar los caracteres especiales.

Implementar un punto final AJAX seguro.

La funcionalidad AJAX es muy común en los plugins. WordPress ofrece wp_ajax_{action} Y wp_ajax_nopriv_{action} Los ganchos se utilizan para procesar las solicitudes AJAX. La clave de la seguridad radica en verificar los permisos (nonce) y las capacidades del usuario.

// 为登录用户添加AJAX处理
add_action( 'wp_ajax_myplugin_action', 'myplugin_handle_ajax_request' );
// 如果希望未登录用户也能访问,则需额外添加(慎用)
// add_action( 'wp_ajax_nopriv_myplugin_action', 'myplugin_handle_ajax_request' );

function myplugin_handle_ajax_request() {
    // 1. 检查Nonce(防止跨站请求伪造)
    check_ajax_referer( 'myplugin_secure_nonce', 'security' );

// 2. 检查用户权限(例如,只有管理员才能执行此操作)
    if ( ! current_user_can( 'manage_options' ) ) {
        wp_die( '权限不足', 403 );
    }

// 3. 获取并清理输入数据
    $some_data = sanitize_text_field( $_POST['some_data'] ?? '' );

// 4. 处理业务逻辑...
    $result = [ 'success' => true, 'message' => '处理成功' ];

// 5. 返回JSON响应
    wp_send_json( $result );
}

Cuando se envía una solicitud en JavaScript del front-end, es necesario pasar el nonce a través de wp_localize_script Pasarlo.

Preparación para la internacionalización de los complementos.

Para que tu complemento pueda ser utilizado por usuarios de todo el mundo, es necesario prepararlo para la internacionalización (i18n). Esto significa que todas las cadenas de texto dirigidas a los usuarios no deben estar escritas directamente en el código, sino que deben estar envueltas en las funciones de traducción de WordPress.

La función más utilizada es __()(Obtener la cadena traducida) y _e()(Salida de la cadena traducida). Necesitas definirlo en la cabecera del plugin. Text DomainY usarlo de manera uniforme en el código.

// 在插件主文件头部已定义:Text Domain: my-first-plugin

// 在代码中使用
$greeting = __( 'Hello, world!', 'my-first-plugin' );
_e( 'This text will be echoed and translatable.', 'my-first-plugin' );

Luego, puedes usar herramientas como Poedit para generar .pot Los archivos de plantilla, a partir de los cuales los traductores pueden crear versiones en diferentes idiomas. .mo Documento. Coloque el documento para traducir en la carpeta del plugin. /languages/ Bajo el directorio, WordPress cargará automáticamente la traducción correspondiente según la configuración del idioma del sitio web.

resúmenes

El desarrollo de plugins de WordPress es un proceso que convierte las ideas en funcionalidades, y su base radica en comprender el mecanismo de los hooks, seguir las normas de seguridad y adoptar una estructura de código modular. Desde la configuración del entorno y la escritura del primer archivo principal, hasta la integración profunda de las funciones principales de WordPress mediante los hooks de acciones y filtros, y la creación de una interfaz de administración profesional, cada paso refleja la competencia del desarrollador. La seguridad es la garantía de la vida útil del plugin, y la validación, limpieza y escape de datos, así como la implementación segura de AJAX, son requisitos indispensables. Por último, mediante la preparación para la internacionalización, tu plugin podrá servir a usuarios de todo el mundo. Al dominar estas habilidades básicas, tendrás la capacidad de crear plugins de WordPress de alta calidad desde cero.

FAQ Preguntas más frecuentes

¿Qué conocimientos básicos se necesitan para desarrollar un complemento de WordPress?

Desarrollar un plugin de WordPress requiere conocimientos básicos del lenguaje de programación PHP, ya que la lógica central del plugin está escrita en PHP. Al mismo tiempo, se necesita un conocimiento básico de HTML, CSS y JavaScript para crear interfaces y funcionalidades interactivas. Lo más importante es comprender la arquitectura básica de WordPress, especialmente su sistema de ganchos (Hooks), que incluye acciones (Actions) y filtros (Filters), que son la principal forma en que los plugins interactúan con WordPress.

¿Cómo depuro mi plugin para WordPress?

Se recomienda utilizar el modo WP_DEBUG. En el directorio raíz de WordPress, wp-config.php En el documento, se indicará que... define( 'WP_DEBUG', false ); cambiar a define( 'WP_DEBUG', true );Esto mostrará los errores y advertencias de PHP en la pantalla y los registrará en un archivo. /wp-content/debug.log En el archivo. Al mismo tiempo, se puede instalar un complemento de monitoreo de consultas (como Query Monitor) para analizar en profundidad las consultas de la base de datos, la ejecución de los ganchos y los cuellos de botella de rendimiento. Las herramientas de desarrollo del navegador (Consola, Red) también son fundamentales para depurar las solicitudes de JavaScript y AJAX.

¿Cómo puede mi complemento ser compatible con un tema u otros complementos?

Para garantizar la máxima compatibilidad, debe seguir los estándares de codificación y las mejores prácticas de WordPress. Utilice prefijos de nombres de funciones o nombres de clases específicos del complemento para evitar conflictos de nombres con otro código. Utilice variables globales con precaución. Cuando agregue tablas de base de datos personalizadas, también debe utilizar prefijos para las mismas. Para las funciones que puedan ser extendidas por otros desarrolladores, considere proporcionar sus propios ganchos. Antes de modificar los datos globales (como las variables de consulta), compruebe primero su estado y, después de la operación, restablezca el estado original en la medida de lo posible. Realizar pruebas exhaustivas entre temas y complementos es un paso necesario para garantizar la compatibilidad.

¿Cómo publicar el complemento en el directorio oficial de WordPress una vez que esté desarrollado?

En primer lugar, debes asegurarte de que el complemento cumpla totalmente con las directrices oficiales de desarrollo de complementos y las normas de código. Solicita una cuenta en WordPress.org y envía el complemento. Debes alojar el código del complemento en un repositorio SVN y proporcionar un archivo Readme.txt detallado (utilizando un formato específico). El complemento debe pasar una revisión de código oficial, que se centra en la seguridad, la calidad del código, los comentarios del código (que deben estar en formato DocBlock) y la ausencia de código malicioso. Una vez enviado con éxito, puedes actualizar y mantener la versión de tu complemento a través de SVN.