Desde cero: Arquitectura básica para el desarrollo de plugins para WordPress

2 minutos de lectura
2026-03-17
2026-06-03
2,499
Gano comisiones cuando compras a través de los enlaces de abajo, sin coste adicional para ti.

Desde cero: Arquitectura básica para el desarrollo de plugins para WordPress

Para desarrollar un plugin para WordPress, primero es necesario comprender su estructura básica. El archivo más importante de un plugin es el archivo principal, que suele llevar el mismo nombre que el plugin. Por ejemplo…my-first-plugin.phpEste archivo no solo contiene todo el código funcional del plugin, sino que, lo que es más importante, también incluye las notas de cabecera con información sobre el plugin en su parte superior. Estas notas de cabecera son clave para que WordPress reconozca el plugin.

Las notas de cabecera de los plugins deben contener metadatos específicos. Aquí hay un ejemplo básico:

<?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
 */

Creé este archivo y lo coloqué en el lugar correspondiente./wp-content/plugins/Después de agregar el plugin al directorio correspondiente, podrás verlo en la página de “Plugins” del panel de administración de WordPress, donde podrás activarlo o desactivarlo. A continuación, es de suma importancia comprender el orden en el que se carga y se ejecuta el código del plugin. Al cargar los plugins, WordPress lo hace en orden alfabético./wp-content/plugins/Todos los archivos principales de los plugins válidos que se encuentran en el directorio. Por lo tanto, si tu plugin depende de las funciones de otro plugin, no puedes asumir simplemente que ese otro plugin ya ha sido cargado. En este caso, es necesario utilizar…plugins_loadedEste gancho de acción asegura que el código se ejecute en el momento adecuado.

Lecturas recomendadas Guía completa para el desarrollo de plugins para WordPress: desde cero hasta la creación de extensiones de nivel comercial

Comprender en profundidad los ganchos: el mecanismo de acciones y filtros

La filosofía central del desarrollo de plugins para WordPress es el concepto de “ganchos” (Hooks). Los ganchos te permiten insertar tu propio código en el flujo de ejecución del núcleo de WordPress, de los temas o de otros plugins, sin necesidad de modificar los archivos originales. Los ganchos se dividen principalmente en dos categorías: los ganchos de acción (Action Hooks) y los ganchos de filtro (Filter Hooks).

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

Los ganchos de acción (action hooks) te permiten ejecutar funciones personalizadas cuando ocurren eventos específicos. Por ejemplo, cuando se publica un artículo…publish_post), al cargar recursos en la parte superior de la página web (en el cabezal de la página).wp_enqueue_scripts) o durante la inicialización en el panel de administración.admin_initPara utilizar un gancho de acción (action hook), necesitas seguir estos pasos:add_action()La función “monta” tu función de callback en ese gancho (hook).

add_action( 'init', 'myplugin_custom_init' );
function myplugin_custom_init() {
    // 在WordPress初始化时执行
    // 例如,注册一个自定义文章类型
}

Los ganchos de filtro (filter hooks) se utilizan para modificar los datos. Te permiten interceptar y alterar las variables que se le pasan, y luego devolverlas. Por ejemplo, puedes modificar el contenido de un artículo.the_content), modificar la longitud de los extractos (excerpt_length) o modificar los resultados de la búsqueda (the_postsPara utilizar un filtro, es necesario realizar una llamada.add_filter()Función.

add_filter( 'the_title', 'myplugin_custom_title' );
function myplugin_custom_title( $title ) {
    // 修改文章标题
    return '前缀:' . $title;
}

Crear un gancho personalizado

Además de los cientos de ganchos (hooks) incorporados que ofrece WordPress, los desarrolladores de plugins avanzados también pueden crear sus propios ganchos para que otros desarrolladores los utilicen a fin de expandir las funcionalidades del sistema.do_action()Vamos a crear un gancho de acción (action hook) utilizando…apply_filters()Vamos a crear un gancho de filtro (filter hook).

// 在插件代码中定义一个自定义动作钩子
do_action( 'myplugin_after_something_happens', $some_data );

// 在插件代码中定义一个自定义过滤器钩子
$value = apply_filters( 'myplugin_filter_some_value', $default_value );

Desarrollo de funciones de plugins: Seguridad y buenas prácticas

Al desarrollar funciones para complementos (plugins), la seguridad es un factor de prioridad capital. Nunca debes confiar en los datos ingresados por los usuarios. Todos los datos provenientes de fuentes externas (como formularios, parámetros de URL o cookies) deben ser verificados, limpiados y procesados de manera adecuada (es decir, deben eliminarse los caracteres especiales que podrían causar problemas de seguridad).

Lecturas recomendadas Guía para principiantes en el desarrollo de plugins para WordPress: Cómo crear funciones personalizadas desde cero hasta la perfección

Validación de datos y escape

Para el ingreso de datos, se utiliza…sanitize_text_field()sanitize_email()intval()Utiliza funciones como estas para realizar la limpieza de los datos. En cuanto a los datos que se muestran en la página HTML, utiliza…esc_html()esc_attr()owp_kses_post()Se realiza la escapación de los caracteres para prevenir ataques de tipo Cross-Site Scripting (XSS).

$user_input = $_POST['some_field'];
$clean_input = sanitize_text_field( $user_input );

// 输出时
echo '<div class="' . esc_attr( $class_name ) . '">'`. esc_html($clean_input)`.'</div>';

Interactuar con la base de datos

WordPress ofrece…$wpdbLos objetos globales se utilizan para realizar operaciones directas en la base de datos, pero se debe dar prioridad al uso de las funciones integradas de WordPress.get_post()update_option()Por ejemplo. Si es necesario utilizar SQL, asegúrese de hacerlo de manera adecuada.$wpdb->prepare()Métodos para prevenir inyecciones SQL.

global $wpdb;
$user_id = intval( $_GET['id'] );
$results = $wpdb->get_results(
    $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d", $user_id )
);

Añadir menú y página de administración

Crear una página de configuración para un plugin es una solicitud común. Puedes utilizar…add_menu_page()oadd_options_page()Las funciones para agregar elementos de menú en el fondo de escena deben ser utilizadas en los siguientes momentos:admin_menuSe llama desde el gancho de acción (action hook).

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%.
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
function myplugin_add_admin_menu() {
    add_options_page(
        '我的插件设置', // 页面标题
        '我的插件',     // 菜单标题
        'manage_options', // 权限
        'myplugin-slug',  // 菜单别名
        'myplugin_settings_page' // 用于呈现页面的回调函数
    );
}
function myplugin_settings_page() {
    // 输出设置页面HTML
    echo '<div class="wrap"><h1>establecer</h1></div>';
}

Preparación para el lanzamiento del plugin: Internacionalización y organización del código

Cuando las funciones del plugin estén completamente desarrolladas, será necesario prestar atención a la internacionalización y a la organización del código con el fin de llegar a un público más amplio y facilitar su mantenimiento.

Implementar la internacionalización del complemento

La internacionalización (i18n) permite que tus plugins sean traducidos a otros idiomas. Para ello, es necesario utilizar las funciones de traducción de WordPress.__()_e()_x()Incluye todas las cadenas de texto visibles para los usuarios, y decláralas en la parte superior del complemento (plugin).Text Domain(Por ejemplo,my-first-plugin)。

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

// 然后,使用如Poedit等工具生成 .pot 翻译模板文件。

Organización del código modular

Evita amontonar todo el código en el archivo principal. Una buena práctica es dividir el código que realiza funciones diferentes en archivos separados..phpEstán en el archivo y se incluyen a través del archivo principal. Por ejemplo:
- includes/admin/ El directorio contiene el código relacionado con el backend.
- includes/public/ El directorio contiene el código relacionado con la parte frontal (frontend) del sitio web.
- includes/class-*.php Aquí se almacenan las definiciones de las clases principales.
- assets/css/ Y assets/js/ Almacena hojas de estilo y scripts.

Lecturas recomendadas Guía definitiva para el desarrollo de plugins para WordPress: Las principales técnicas para crear funciones personalizadas desde cero

El uso de la programación orientada a objetos permite organizar el código de manera más eficiente, evitar conflictos en los nombres de las funciones y mejorar la reutilizabilidad. Se debe definir una clase principal y, en su método de construcción, se deben agregar todos los “ganchos” (hook) necesarios.

class My_First_Plugin {
    public function __construct() {
        add_action( 'init', array( $this, 'init_method' ) );
        add_filter( 'the_content', array( $this, 'filter_content' ) );
    }
    public function init_method() {
        // 初始化
    }
    public function filter_content( $content ) {
        return $content . '<p>Contenido adicional para el plugin</p>';
    }
}
new My_First_Plugin();

resúmenes

El desarrollo de plugins para WordPress es un proceso que consiste en integrar funciones personalizadas de manera fluida en el ecosistema de WordPress. Todo comienza con un archivo de comentarios de cabecera del plugin que cumpla con los estándares establecidos. El núcleo del desarrollo radica en el uso experto de los ganchos de acciones (action hooks) y los ganchos de filtros (filter hooks), para extender o modificar el comportamiento de WordPress de manera basada en eventos. Durante el proceso de codificación, la seguridad debe ser de prioridad máxima; es esencial realizar una validación rigurosa de los datos, así como su limpieza y escape adecuado. A medida que las funciones del plugin aumentan, una buena organización del código (incluyendo un diseño orientado a objetos y una estructura de archivos modular), así como el soporte a la internacionalización, se convierten en pasos clave para mejorar la mantenibilidad, la profesionalidad y la alcance de usuarios del plugin. Al seguir estas buenas prácticas, podrás crear plugins para WordPress que sean potentes, seguros y fáciles de distribuir.

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.

FAQ Preguntas más frecuentes

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

Es necesario dominar los fundamentos del lenguaje PHP, ya que WordPress y sus plugins están escritos en este idioma. Además, se debe tener un conocimiento básico de HTML, CSS y JavaScript para manejar la presentación y la interacción en la parte frontal de la página web. Lo más importante es comprender el proceso de funcionamiento de WordPress y su sistema de ganchos (Hooks), que es el mecanismo central para el desarrollo de plugins.

¿Cómo puedo evitar que los nombres de las funciones de mi plugin se conflictúen con los de otros plugins?

La mejor práctica es utilizar la programación orientada a objetos (POO) para encapsular tus funciones en una clase; de esta manera, los nombres de los métodos dentro de la clase serán independientes. Si se utiliza la programación procedural, es necesario agregar un prefijo único a todas las funciones, clases y constantes. Este prefijo puede ser la abreviatura de tu plugin o el nombre de tu marca, por ejemplo…myplugin_oacme_Y asegúrate de mantener la coherencia en todo el código.

¿Dónde debo cargar los archivos JavaScript y CSS del plugin?

Para garantizar la corrección y el rendimiento, nunca coloques enlaces directos a los archivos de recursos en las plantillas HTML. Debes utilizar las funciones de cola de espera (enqueue) proporcionadas por WordPress. En el caso de los recursos front-end, utiliza…wp_enqueue_script()Ywp_enqueue_style()Y montarlo en…wp_enqueue_scriptsEn los ganchos de acción (action hooks). Para los recursos que se utilizan únicamente en la interfaz de administración en segundo plano, se montan allí.admin_enqueue_scriptsEn el gancho.

¿Cómo almacenan los plugins sus propios ajustes y datos?

Para configuraciones sencillas que involucran un solo valor, se puede utilizar la API de opciones de WordPress.add_option()get_option()Yupdate_option()Para datos más complejos y estructurados (por ejemplo, listas de entradas de formularios), se deben crear tablas de base de datos personalizadas. Se puede utilizar…dbDelta()La función se activa cuando el complemento (plugin) se activa.register_activation_hookCrea o actualiza la estructura de una tabla de manera segura.