Guía definitiva para el desarrollo de plugins para WordPress: El camino hacia la maestría, desde los principios hasta la práctica real

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

Si deseas desarrollar un plugin para WordPress, primero es necesario comprender su estructura básica. Un plugin es, en esencia, uno o más archivos PHP que siguen las especificaciones específicas de WordPress y interactúan con el núcleo del sistema a través de un sistema de ganchos (hooks) para expandir o modificar las funcionalidades del sitio web. Para crear un plugin, necesitarás al menos un archivo principal que contenga las anotaciones de cabecera estándar para plugins; estas anotaciones son clave para que WordPress reconozca el plugin.

Desarrolla tu primer complemento

Comencemos creando el plugin más simple posible, el “Hello World”. Este proceso te ayudará a familiarizarte con la estructura de los plugins, así como con los procedimientos para activarlos y desactivarlos.

Crear el archivo principal del plugin

Primero, en el directorio de instalación de WordPress:wp-content/pluginsDentro de la carpeta, cree una nueva carpeta, por ejemplo…my-first-pluginDentro de esa carpeta, crea uno llamadomy-first-plugin.phpEl archivo principal de PHP se encuentra en esta carpeta. Por lo general, el nombre de este archivo coincide con el nombre de la carpeta.

Lecturas recomendadas Guía definitiva para el desarrollo de plugins para WordPress: Crea tu primer plugin desde cero

Abrirmy-first-plugin.phpPara el archivo, ingrese la siguiente información de cabecera del plugin estándar:

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).
<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习的简单Hello World插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 */

Esta nota es de vital importancia. WordPress realiza el escaneo para…wp-content/pluginsy todos los archivos PHP en sus subdirectorios.Plugin Name:El sistema identifica los plugins y los muestra en la página de administración de plugins que se encuentra en segundo plano.

Implementar funciones básicas y activar los ganchos (hooks) correspondientes.

A continuación, agregaremos una función sencilla al plugin: mostrar una línea de texto personalizado en el pie de página del sitio web. Además, utilizaremos los ganchos de ciclo de vida de WordPress para demostrar las acciones que se pueden realizar cuando el plugin se activa o se desactiva.

Debajo de los comentarios en la parte superior del código, continúe agregando el siguiente código:

// 定义一个函数,在页脚输出信息
function my_first_plugin_display_footer_text() {
    echo '<p style="text-align: center;">¡Bienvenido a utilizar mi primer plugin para WordPress!</p>';
}
// 使用 ‘wp_footer’ 动作钩子挂载我们的函数
add_action( 'wp_footer', 'my_first_plugin_display_footer_text' );

// 插件激活时执行的操作
function my_first_plugin_activate() {
    // 可能在这里创建数据库表、设置默认选项等
    update_option( 'my_first_plugin_installed', current_time( 'mysql' ) );
}
register_activation_hook( __FILE__, 'my_first_plugin_activate' );

// 插件停用时执行的操作
function my_first_plugin_deactivate() {
    // 清理临时数据,但保留可能由用户创建的数据
    delete_option( 'my_first_plugin_installed' );
}
register_deactivation_hook( __FILE__, 'my_first_plugin_deactivate' );

Ahora, inicie sesión en el panel de administración de su WordPress, vaya a la página de “Plugins” y debería ver un plugin llamado “Mi primer plugin”. Haga clic en “Activar”. Luego, visite la página frontal de su sitio web y despliegue el contenido hacia abajo; allí debería ver el texto personalizado que ha añadido. Este ejemplo sencillo muestra el proceso básico para crear y utilizar un plugin.

Lecturas recomendadas Guía completa para el desarrollo de complementos de WordPress: desde cero hasta crear tu primer complemento

Comprender en profundidad el sistema de ganchos (hooks) de WordPress

Los ganchos (hooks) son la piedra angular en el desarrollo de plugins para WordPress. Permite insertar tu propio código en puntos específicos del ejecución del código central, sin necesidad de modificar los archivos originales de WordPress. Los ganchos se dividen principalmente en dos tipos: Acciones (Actions) y Filtros (Filters).

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

Los ganchos de acción (action hooks) se ejecutan cuando ocurren eventos específicos, como la publicación de un artículo o la carga de la cabecera o el pie de página de una página. No se espera que devuelvan ningún valor; su único propósito es “ejecutar un fragmento de código”. Ya los hemos utilizado en el primer plugin.wp_footerEste es un ganchito de acción.

Otro ejemplo común es…initEl “gancho” (hook) se activa durante la inicialización de WordPress y se utiliza comúnmente para registrar tipos de artículos o categorías personalizados.

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 my_plugin_custom_init() {
    // 在这里注册自定义文章类型
}
add_action( 'init', 'my_plugin_custom_init' );

Los ganchos de acción (action hooks) funcionan a través de…add_action( $hook_name, $function_to_add, $priority, $accepted_args )Montaje de funciones.

Uso de los ganchos de filtro (filter hooks)

Los ganchos de filtro (filter hooks) se utilizan para modificar los datos. Te los envían antes de que sean utilizados (por ejemplo, al guardarlos en una base de datos o al mostrarlos en un navegador), y tú puedes procesarlos y devolver los valores modificados.the_contentLos filtros te permiten modificar el contenido de los artículos.

La función my_plugin_add_disclaimer_to_content( $content ) realiza lo siguiente:
   Si se trata de una página individual (is_single()), se agrega el siguiente texto de descargo de responsabilidad al contenido:
   '<p><em>Este artículo ha sido procesado por mi plugin.</em></p>'function my_plugin_add_disclaimer_to_content( $content ) {  
    if ( is_single() ) {  
        $content = preg_replace( '/<p>/', '<p><strong>Nota: Este es un artículo patrocinado.</strong></p>', $content );  
    }  
    return $content;  
}
add_filter( 'the_content', 'my_plugin_add_disclaimer_to_content' );

Los ganchos de filtro están funcionando correctamente.add_filter( $hook_name, $function_to_add, $priority, $accepted_args )Montaje de funciones. Prioridad$priorityEstablece el orden de ejecución cuando varias funciones se montan en el mismo gancho; cuanto menor sea el número, mayor será la prioridad.

Lecturas recomendadas Guía para principiantes en el desarrollo de complementos de WordPress: crea tu primer complemento funcional desde cero.

Arquitectura de plugins y mejores prácticas de seguridad

A medida que las funciones de los plugins se vuelven más complejas, una buena arquitectura y medidas de seguridad estrictas son clave para garantizar que los plugins sean estables, fáciles de mantener y seguros.

Utilizar la programación orientada a objetos.

对于功能丰富的插件,建议使用类(Class)来组织代码。这有助于封装功能,避免函数名冲突,并使代码结构更清晰。

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.
&lt;?php
/**
 * Plugin Name: 高级示例插件
 */
if ( ! class_exists( &#039;Advanced_Sample_Plugin&#039; ) ) {
    class Advanced_Sample_Plugin {
        public function __construct() {
            // 在构造函数中挂载钩子
            add_action( &#039;wp_footer&#039;, array( $this, &#039;display_message&#039; ) );
            add_filter( &#039;the_title&#039;, array( $this, &#039;modify_title&#039; ) );
        }

public function display_message() {
            echo &#039;<p>Mensaje procedente de la categoría de plugins avanzados.</p>';
        }

public function modify_title( $title ) {
            return '前缀 - ' . $title;
        }
    }
    // 初始化插件类
    new Advanced_Sample_Plugin();
}

Implementar medidas de protección de seguridad

La seguridad de los plugins para WordPress es de suma importancia. El principio fundamental es: nunca confíes en los datos introducidos por los usuarios. Todos los datos provenientes de los usuarios deben ser verificados y procesados de manera segura para evitar posibles ataques o vulnerabilidades en el sistema.$_GET$_POST$_COOKIETodos los datos obtenidos de las variables superglobales deben ser verificados, limpiados y escapados.

1. Verificación: Comprobar si los datos cumplen con el formato esperado (por ejemplo, si son una dirección de correo electrónico o un número). Utilizar…sanitize_email()is_email()y otras funciones.
2. Limpieza: Elimina los caracteres ilegales o inseguros de los datos. Para las entradas de texto, utiliza…sanitize_text_field()Para el contenido que permite el uso de HTML, utiliza…wp_kses_post()owp_kses()
3. Escape: Al enviar datos a HTML, JavaScript o URL, asegúrese de que estén codificados de manera segura. Utilice los métodos adecuados para evitar problemas de seguridad.esc_html()esc_js()esc_url()y otras funciones.

Por ejemplo, al tratar con un atributo de código corto:

function my_shortcode_handler( $atts ) {
    // 使用 shortcode_atts 设置默认值并提取属性
    $atts = shortcode_atts( array(
        'url' =&gt; '#',
    ), $atts, 'my_shortcode' );

// 清理并转义 URL 属性
    $clean_url = esc_url( $atts['url'] );

return "<a href='/es/{$clean_url}/'>Enlace seguro</a>"php
add_shortcode('my_shortcode', 'my_shortcode_handler');

Agregar una interfaz de administración y soporte para la internacionalización al plugin.

Un complemento (plugin) maduro suele requerir opciones de configuración y debe tener en cuenta la posibilidad de soportar múltiples idiomas.

Crear la página de configuración de administración

Se puede utilizar la API de Configuraciones (Settings API) de WordPress para crear páginas de administración seguras y estandarizadas. Esta es la metodología recomendada, ya que se encarga de gestionar los aspectos de seguridad (verificación de tokens de validación, *nonce*) y de garantizar la coherencia en la interfaz de usuario de los formularios.

Aquí hay un ejemplo simplificado de cómo agregar un menú principal y una página de configuración:

Clase My_Plugin_Admin {
    public function __construct() {
        add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
        add_action( 'admin_init', array( $this, 'settings_init' ) );
    }

public function 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
            'my-plugin',      // Slug del menú
            array( $this, 'options_page_html' ) // Función de devolución, que muestra el contenido de la página
        );
    }

public function settings_init() {
        register_setting( 'my_plugin_settings', 'my_plugin_options' ); // Registra la configuración

// Añade secciones y campos de configuración
        add_settings_section( 'my_plugin_section', 'Configuración principal', null, 'my-plugin' );
        add_settings_field( 'api_key', 'Clave API', array( $this, 'api_key_field_html' ), 'my-plugin', 'my_plugin_section' );
    }

public function api_key_field_html() {
        $options = get_option( 'my_plugin_options' );
        ?&gt;
        <input type='text' name='my_plugin_options[api_key]' value='<?php echo esc_attr( $options['api_key'] ?? '' ); ?>'>
        <p><strong>Este es un ejemplo de código PHP</strong></p>
        <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( 'my_plugin_settings' );
                do_settings_sections( 'my-plugin' );
                submit_button();
                ?>
            <input type="hidden" name="trp-form-language" value="es"/></form>
        </div>
        ¿php?
    }
}
nuevo My_Plugin_Admin();

Implementar la internacionalización del complemento

Para que el plugin pueda ser utilizado por usuarios de todo el mundo, es necesario que sea compatible con múltiples idiomas. Esto se logra mediante el uso de…__( ‘Text’, ’text-domain’ )Y_e( ‘Text’, ’text-domain’ )Se implementa envolviendo todas las partes del texto que son visibles para los usuarios en las funciones de traducción. Lo que definiste anteriormente en las notas al comienzo del plugin…Text Domain: my-first-pluginEstá preparado precisamente para esto.

1. En el código, utilice la función de traducción para todas las cadenas de texto que necesiten ser traducidas.

    echo __( ‘欢迎使用我的插件!’, ‘my-first-plugin’ );
    $title = esc_html__( ‘设置页面’, ‘my-first-plugin’ );

2. Utiliza herramientas como Poedit para analizar las cadenas de texto traducidas en el código del plugin y generar el contenido necesario para la traducción..potArchivo de plantilla. Los traductores utilizan este archivo para crear las versiones del texto en cada idioma correspondiente..poY después de la compilación..moArchivos (como…)zh_CN.po/mo)。
3. Coloque estos archivos de idioma en la carpeta del plugin.languagesEn la carpeta correspondiente, WordPress cargará automáticamente las traducciones adecuadas según la configuración del idioma del sitio.

resúmenes

El desarrollo de plugins para WordPress es un proceso que va desde scripts simples hasta aplicaciones complejas. La clave radica en comprender y utilizar con habilidad el sistema de ganchos (hooks), integrando tus funciones de manera fluida en el ciclo de vida de WordPress a través de acciones (actions) y filtros (filters). Seguir los principios de la arquitectura orientada a objetos puede mejorar la organización y mantenibilidad del código. La seguridad es la piedra angular del desarrollo; es esencial verificar, limpiar cualquier entrada proporcionada por los usuarios y escapar los caracteres especiales en la salida. Finalmente, crea una interfaz de administración profesional mediante la API de Configuraciones (Settings API) y utiliza funciones de internacionalización para que tu plugin sea accesible en todo el mundo. Comienza creando un plugin sencillo…my-first-plugin.phpComienza a practicar gradualmente estos conceptos, y podrás desarrollar plugins para WordPress que sean potentes, seguros y populares.

FAQ Preguntas más frecuentes

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

Es necesario dominar el lenguaje de programación PHP, ya que los plugins están escritos principalmente en este idioma. Además, se debe tener un conocimiento básico de HTML, CSS y JavaScript para construir interfaces y funciones interactivas en el lado del usuario. Lo más importante es comprender el funcionamiento fundamental de WordPress, incluyendo temas, ganchos (hooks), bucles y métodos de almacenamiento de datos.

¿Puedo probar el plugin localmente sin afectar al sitio web en línea?

Por supuesto que sí, y se recomienda encarecidamente que desarrolles los plugins en un entorno de desarrollo local (utilizando herramientas como XAMPP, MAMP, Local by Flywheel, etc.) o en un servidor de prueba independiente. De esta manera, evitarás que errores en el código provoquen el cierre del sitio web en línea o la pérdida de datos.

¿Cómo depurar el código de mi complemento?

WordPress ofrece una variedad de herramientas de depuración. En primer lugar,wp-config.phpActivar el modo de depuración en el archivo: definiciónWP_DEBUGConstantes son…trueEsto mostrará directamente en la página los errores, advertencias y avisos de PHP. Para una depuración más compleja, se puede utilizarerror_log()La función escribe la información en el registro de errores del servidor, o utiliza plugins de depuración especializados como Query Monitor, que proporcionan detalles sobre consultas a la base de datos, hooks y errores de PHP.

Una vez que el plugin esté completamente desarrollado, ¿cómo se puede enviar al directorio oficial de WordPress?

Debes acceder a WordPress.org y crear una cuenta. Luego, utiliza la herramienta Subversion (SVN) para enviar el código de tu plugin al repositorio SVN proporcionado por WordPress. Antes de realizar el envío, asegúrate de que el código cumpla con los estándares y guías oficiales de desarrollo de plugins, incluyendo requisitos de seguridad, calidad del código, documentación e internacionalización. Una vez que el envío sea aprobado, tu plugin aparecerá en el directorio oficial para que los usuarios lo descarguen e instalen.