Análisis en profundidad: Dominar el núcleo y la práctica del desarrollo de plugins de WordPress desde cero.

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

Composición básica de los plugins para WordPress

Un plugin estándar para WordPress, cuyo núcleo se encuentra en… /wp-content/plugins/ Es una carpeta independiente que se encuentra dentro del directorio principal. Dicha carpeta debe contener al menos un archivo PHP principal, cuyas notas de cabecera (header comments) incluyen la metainformación del plugin. Esta información es esencial para que WordPress pueda reconocer y utilizar el plugin.

Las notas de cabecera de los plugins son de vital importancia. Utilizan un formato específico para comunicar al sistema de WordPress información sobre el nombre del plugin, su descripción, versión, autor, etc. Una nota de cabecera típica de un plugin se muestra a continuación:

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

Este código debe colocarse al principio del archivo principal del plugin.Plugin Name Estos campos son obligatorios; el resto son optativos. Cuando WordPress escanea el directorio de plugins, utiliza esta información para mostrar la lista de plugins en la interfaz de administración en segundo plano.

Lecturas recomendadas Desarrollo de plugins para WordPress: Desde los principios hasta la maestría: Te guiamos paso a paso para crear tu primer plugin personalizado

Además del archivo principal, un complemento (plugin) completamente funcional suele contener otros archivos y directorios, como los utilizados para almacenar recursos JavaScript y CSS. assets Carpeta, utilizada para la traducción. languages Carpeta utilizada para almacenar archivos de clases. includes Carpetas, así como los archivos de plantillas utilizados para la presentación en la interfaz frontal del usuario, son elementos esenciales para garantizar la mantenibilidad y la escalabilidad de los plugins. Una buena estructura de directorios constituye la base de estas características.

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

Comprender los mecanismos centrales de WordPress: los ganchos (hooks)

La filosofía central del desarrollo de plugins para WordPress es el concepto de “ganchos (hooks)” y “devoluciones de llamada (callbacks)”. Los ganchos permiten a los desarrolladores insertar su propio código personalizado en momentos específicos de la ejecución del código central de WordPress, lo que les permite modificar o mejorar las funciones predeterminadas sin necesidad de alterar los archivos centrales del sistema. Esto garantiza la integridad del código central y la seguridad al actualizar los plugins.

Los ganchos se dividen principalmente en dos tipos: ganchos de acción y ganchos de filtro.

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, la carga de una página de administración o el inicio de sesión de un usuario. No se espera que devuelvan ningún valor, y su principal función es realizar ciertas operaciones. Los desarrolladores los utilizan para automatizar procesos específicos en su aplicación. add_action() La función monta una función personalizada (función de devolución de llamada) en el gancho de acción especificado.

Por ejemplo, si queremos agregar automáticamente una declaración de derechos de autor al final de cada artículo, podemos utilizar esta funcionalidad. the_content Este “gancho de acción” (aunque a menudo se utiliza como filtro, aquí se demuestra el concepto de acción en sí). Un ejemplo más típico sería ejecutar alguna operación al iniciar WordPress:

Lecturas recomendadas WordPress plugin de desarrollo de principiante a maestro: la mano para enseñar a construir sus propias características exclusivas

function myplugin_setup() {
    // 初始化插件,例如创建数据库表
}
add_action( 'init', 'myplugin_setup' );

El código anterior indica que, cuando WordPress llega a esta parte… init Durante esta acción, se ejecutarán simultáneamente los componentes que hemos definido. myplugin_setup Función.

Uso de los ganchos de filtro (filter hooks)

Los ganchos de filtro (filter hooks) se utilizan para modificar datos. Reciben una variable y devuelven la variable modificada. Los desarrolladores los utilizan para realizar este proceso. add_filter() Se trata de una función que permite cargar funciones de filtro personalizadas. Esta es la forma más común de modificar datos como el contenido de los artículos, los títulos, los enlaces, etc.

Siguiendo el ejemplo anterior, la forma más correcta de agregar información de copyright al contenido de un artículo es utilizar el siguiente formato: the_content 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%.
function myplugin_add_copyright( $content ) {
    if ( is_single() ) {
        $content .= '<p>El derecho de autor de este artículo pertenece a este sitio web. Si desea volver a publicarlo, debe indicar la fuente.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

En este ejemplo, la función… myplugin_add_copyright Recibir el original. $content La variable contiene un texto HTML adicional, el cual se agrega al final de su valor original. Luego, el contenido modificado es devuelto. WordPress utilizará este valor devuelto en lugar del texto original para su visualización.

Crear la página de administración de plugins

Muchos plugins requieren opciones de configuración en el backend de WordPress, lo que implica la creación de páginas de administración. WordPress ofrece una serie de funciones para agregar elementos al menú principal o a los menús secundarios.

Añadir un elemento de menú de nivel superior

utilizar add_menu_page() La función puede crear un menú principal independiente en el backend para los plugins. Esta función requiere varios parámetros, entre los cuales se incluyen el título de la página, el título del menú, los permisos necesarios, un alias para el menú y una función de callback (función de respuesta).

Lecturas recomendadas Guía de introducción al desarrollo de complementos de WordPress: construye tu primera extensión de funcionalidad desde cero.

A continuación, se muestra un ejemplo de código para crear una página de administración de nivel superior simple:

function myplugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',          // 页面标题
        '我的插件',              // 菜单标题
        'manage_options',       // 所需权限(管理员)
        'myplugin-settings',    // 菜单别名(URL中的slug)
        'myplugin_settings_page', // 用于输出页面内容的回调函数
        'dashicons-admin-generic', // 图标(使用Dashicons)
        80                      // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// 定义输出页面内容的回调函数
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Configuraciones de mi plugin</h1>
        <form method="post" action="/es/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'myplugin_settings_group' );
            do_settings_sections( 'myplugin-settings' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Este código comienza por… add_action Montar la función para agregar el menú en… admin_menu Gancho: Cuando el menú se carga en el backend, se ejecuta el código correspondiente. myplugin_add_admin_menuRegistre un nuevo menú principal llamado “Mis plugins”. Al hacer clic en ese menú, WordPress lo activará. myplugin_settings_page Usamos una función para renderizar el contenido de la página.

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.

Configurar el almacenamiento de campos y opciones

No basta con tener solo la estructura básica de la página; también necesitamos crear campos de formulario en ella y almacenar de manera segura los valores introducidos por los usuarios. La API de Configuraciones (Settings API) de WordPress está diseñada precisamente para esto, ya que permite automatizar el proceso de validación de datos, así como el almacenamiento y la generación de tokens de seguridad (nonce).

En primer lugar, necesitamos registrar una opción de configuración, un bloque de configuración y los campos específicos correspondientes:

function myplugin_settings_init() {
    // 1. 注册一个设置选项到数据库
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 在页面内添加一个设置区块
    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

// 3. 在区块内添加一个具体的字段
    add_settings_field(
        'myplugin_field_text',
        '示例文本输入',
        'myplugin_field_text_render', // 渲染字段HTML的回调函数
        'myplugin-settings',
        'myplugin_section_main'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

// 定义字段的HTML输出
function myplugin_field_text_render() {
    $options = get_option( 'myplugin_options' );
    $value = $options['text_field'] ?? '';
    ?>
    <input type='text' name='myplugin_options[text_field]' value='<?php echo esc_attr( $value ); ?>'>
    <?php
}

A través de este conjunto de API, después de que se envíe un formulario, los datos se guardarán automáticamente en… wp_options En la tabla, el nombre es… myplugin_options En los registros (un array serializado), los desarrolladores pueden utilizarlo. get_option( ‘myplugin_options’ ) Obtenga estos valores de manera segura, ya sea en la parte frontal (frontend) o en la parte posterior (backend) del sistema.

Seguridad de los plugins y prácticas recomendadas

Desarrollar un plugin popular implica que la seguridad y la calidad del código sean aspectos de suma importancia. Seguir las mejores prácticas puede ayudar a evitar las vulnerabilidades más comunes y, al mismo tiempo, a mejorar la experiencia del usuario.

Validación de datos, escape y limpieza

Todos los datos provenientes de usuarios o fuentes externas son considerados no confiables. Al enviar los datos al navegador (lado frontal del sitio web), es necesario realizar la correspondiente codificación («escape») para evitar ataques de tipo XSS (Cross-Site Scripting). Al mismo tiempo, al almacenar los datos en la base de datos (lado posterior del sitio web), es esencial limpiar y verificar dichos datos antes de su inserción.

WordPress ofrece una gran cantidad de funciones auxiliares. Para el contenido que se va a generar y mostrar en HTML, se pueden utilizar estas funciones para facilitar el proceso de generación y formateo del código. esc_html(), esc_attr(), esc_url() Funciones como estas. Para los valores que se envían a una variable de JavaScript, se utiliza… wp_json_encode()En las operaciones con bases de datos, siempre se debe utilizar… $wpdb->prepare() Realizar consultas parametrizadas, o utilizar herramientas como… sanitize_text_field(), intval() Funciones como estas se encargan de limpiar la entrada proporcionada por el usuario.

// 不安全的做法
echo $_GET['user_input'];

// 安全的做法:输出到HTML内容
echo esc_html( $_GET['user_input'] );

// 安全的做法:用于HTML属性
$url = esc_url( $_GET['url'] );
echo "<a href='/es/$url/'>enlace</a>";

// 安全的做法:清理后存入数据库
$clean_title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post_id, ‘title’, $clean_title );

Preparación para la internacionalización y localización

Para que los complementos puedan ser utilizados por usuarios de todo el mundo, es esencial prepararlos adecuadamente para la internacionalización. Esto implica que todas las cadenas de texto dirigidas al usuario no deben estar codificadas de forma fija en el código, sino que deben ser encapsuladas utilizando funciones de traducción.

WordPress utiliza el framework GNU gettext. En el código, se hace uso de… __() Por favor, proporciona el texto que deseas traducir. _e() "Ven y únete a nosotros." Text Domainy utilizarlo cuando se carga el plugin load_plugin_textdomain() Un funcionamiento automático de carga de archivos de traducción.

// 定义可翻译的字符串
$greeting = __( ‘Hello, World!', ‘my-first-plugin’ );
_e( ‘Settings saved successfully!', ‘my-first-plugin’ );

// 在插件初始化时加载翻译
function myplugin_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘init’, ‘myplugin_load_textdomain’ );

Los desarrolladores necesitan utilizar herramientas como Poedit para generar lo solicitado. .pot Archivo de plantilla, utilizado por los traductores para crear versiones del texto en diferentes idiomas. .po Y después de la compilación. .mo Los archivos de idioma preparados deben colocarse en la carpeta del plugin. /languages/ Está dentro del directorio. Este es un paso clave para que los plugins se lancen al mercado internacional.

resúmenes

El desarrollo de plugins para WordPress es un proceso que convierte las ideas en funciones reales, y su esencia radica en comprender y utilizar de manera experta el sistema de ganchos (hooks). Todo comienza con la creación de un archivo principal que contenga las anotaciones de cabecera adecuadas; a continuación, se intervienen en el flujo de ejecución a través de los ganchos de acción (action hooks) y se modifica la salida de datos mediante los ganchos de filtro (filter hooks). El uso de la API de Configuraciones (Settings API) proporcionada por WordPress permite crear interfaces de administración en el backend de manera segura y estándar. Respetar estrictamente las normas de seguridad (verificación, escape de datos, limpieza de datos) y las especificaciones de internacionalización es el camino necesario para que un plugin se vuelva maduro, estable y ampliamente utilizado. Recuerde: un buen plugin no solo debe ser funcional, sino también seguro, eficiente y fácil de utilizar por usuarios de todo el mundo.

FAQ Preguntas más frecuentes

¿Cuántos archivos necesita tener como mínimo un plugin?

Un plugin necesita, como mínimo, un archivo PHP. Basta que este archivo contenga las anotaciones de cabecera adecuadas para plugins de WordPress y que se coloque en el lugar correcto. /wp-content/plugins/ Puede colocarlo directamente en el directorio o dentro de una subcarpeta; WordPress lo reconocerá y lo activará automáticamente.

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

Se recomienda utilizarlo en el entorno de desarrollo. wp-config.php En el archivo, active el modo de depuración de WordPress. Luego, WP_DEBUG Los constantes se establecen en trueAl mismo tiempo, es posible configurar (o establecer) los parámetros correspondientes. WP_DEBUG_LOG Para trueRegistre el mensaje de error en… /wp-content/debug.log Es importante evitar que los archivos se muestren directamente en la página. Además, es crucial utilizar las herramientas de desarrollo del navegador para consultar la consola y las solicitudes de red.

¿Dónde deberían estar las opciones de los plugins?

Para la configuración de pares clave-valor sencillos, se recomienda encarecidamente utilizar la API Options de WordPress. add_option(), update_option(), get_option() La función realiza las operaciones necesarias, y los datos se almacenan de manera segura. wp_options En las tablas de la base de datos, para manejar grandes cantidades de datos estructurados, se puede considerar la creación de tablas de base de datos personalizadas. No obstante, esto implica una gestión más compleja del ciclo de vida de dichas tablas (se crean al instalar el software y se eliminan al desinstalarlo).

¿Cómo puedo hacer que mi plugin sea compatible con más versiones de WordPress?

Durante el desarrollo, evita utilizar funciones demasiado novedosas que solo estén soportadas por versiones más recientes de WordPress. En el caso de funciones más recientes que deseas utilizar, asegúrate de probarlas antes de implementarlas en tu proyecto. function_exists() Realiza una inspección y proporciona una solución de degradación elegante. En el caso del plugin… readme.txt En el archivo se indica claramente la versión mínima de WordPress para la cual los tests se consideran aprobados. Realizar pruebas periódicamente en diferentes versiones de WordPress es la mejor forma de garantizar la compatibilidad.