Desde principiante hasta experto en el desarrollo de plugins de WordPress: una guía completa para crear funciones personalizadas.

Lectura en 3 minutos
2026-03-14
2026-06-03
2,479
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

Antes de comenzar a escribir código, contar con un entorno de desarrollo estable y profesional es el primer paso hacia el éxito. Esto no solo mejora tu eficiencia al programar, sino que también asegura la compatibilidad de los plugins en diferentes entornos. El requisito principal es instalar un entorno de ejecución local para WordPress; puedes elegir herramientas como XAMPP, MAMP, Local by Flywheel o Docker. Estas herramientas te ayudarán a configurar automáticamente los servidores PHP, MySQL y Apache/Nginx con solo un clic.

A continuación, viene la elección de un editor de código. Aunque cualquier editor de texto puede ser utilizado para escribir código, utilizar un editor diseñado específicamente para el desarrollo o un entorno de desarrollo integrado (IDE) puede aumentar significativamente la eficiencia. Visual Studio Code, PhpStorm o Sublime Text son opciones excelentes, ya que ofrecen funciones como resaltado de código, sugerencias inteligentes y depuración, lo que ayuda a reducir significativamente los errores de sintaxis.

Una práctica de vital importancia es activar el modo de depuración de WordPress. Esto te permite ver errores, advertencias y notificaciones en tiempo real durante el proceso de desarrollo, en lugar de una página en blanco. Necesitas hacerlo en el sitio web…wp-config.phpLa configuración se realiza dentro del archivo. Busque la definición correspondiente.WP_DEBUGPara la línea que contiene la constante, establezca su valor como…true

Lecturas recomendadas De principiante a experto: guía completa para el desarrollo de plugins de WordPress

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_DISPLAY', false ); // 不建议在页面上直接显示错误

Además, crear un repositorio de control de versiones (como Git) para tu proyecto de plugins es también una práctica recomendable. Esto te ayudará a seguir los cambios en el código, facilitar el reenvío a versiones anteriores y mejorar la colaboración en equipo.

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 la estructura básica de un complemento.

Un plugin básico de WordPress puede constar de un solo archivo, pero para facilitar su mantenimiento y mejorar la claridad del código, generalmente se utiliza una estructura de directorios organizada. El archivo de entrada del plugin es esencial; su nombre debe coincidir con el nombre del archivo principal del mismo. Por ejemplo…my-awesome-plugin.phpEn la parte superior de este archivo debe contenerse un comentario de cabecera con información estándar sobre el plugin, que es utilizado por WordPress para reconocerlo.

<?php
/**
 * Plugin Name:       我的超棒插件
 * Plugin URI:        https://example.com/my-awesome-plugin
 * Description:       这是一个为WordPress添加定制化功能的插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-awesome-plugin
 * Domain Path:       /languages
 */

Después de esta nota de cabecera, puedes comenzar a escribir el código de las funciones principales del plugin. Para plugins sencillos, todo el código puede estar incluido en este mismo archivo. Sin embargo, para plugins más complejos, lo más recomendable es modularizar el código y distribuirlo en diferentes directorios subordinados./includesSe utiliza para almacenar bibliotecas de clases y funciones esenciales./adminCódigo utilizado para la interfaz de administración en segundo plano./publicSe utiliza para la lógica del lado del cliente (frontend)./assetsSe utiliza para almacenar recursos de JavaScript, CSS y imágenes.

Conceptos clave: Acciones, filtros y código corto.

El núcleo del desarrollo de plugins para WordPress radica en comprender su arquitectura basada en eventos, lo cual se logra principalmente a través de los ganchos de acción (Action Hooks) y los ganchos de filtro (Filter Hooks). Estos son los mecanismos que permiten que los plugins interactúen con el código central de WordPress.

Comprender en profundidad los ganchos de acción (action hooks)

Los ganchos de acción (action hooks) te permiten “inyectar” tu propio código en momentos específicos durante el ejecución de WordPress. Puedes “montar” una función personalizada en uno de estos ganchos, y cuando WordPress llegue a ese punto, tu función se ejecutará automáticamente. Por ejemplo…wp_headLa acción se encuentra en la página web.<head>Algunos eventos se activan justo cuando el contenido está a punto de ser mostrado.admin_menuLa acción se desencadena al crear el menú de administración en segundo plano.

Lecturas recomendadas Domina el desarrollo de plugins de WordPress desde cero: guía para implementar funciones avanzadas y mejores prácticas.

utilizaradd_action()Se utiliza una función para montar (o cargar) tu propia función. Su sintaxis básica es:add_action( $hook_name, $callback_function, $priority, $accepted_args );A continuación, se presenta un ejemplo sencillo: se agrega un texto personalizado después del título de la página del artículo.

function myplugin_add_subtitle( $title ) {
    if ( is_single() ) {
        $title .= ' - 欢迎阅读!';
    }
    return $title;
}
add_action( 'the_title', 'myplugin_add_subtitle' );

Dominar el uso de los ganchos (hooks) de los filtros.

Los ganchos de filtro (filter hooks) son similares a los ganchos de acción (action hooks), pero tienen un propósito diferente: se utilizan para modificar los datos. Antes de que WordPress utilice ciertos datos (como el contenido de un artículo, el título o un resumen de este), estos pasan por un filtro. Tu plugin puede “filtrar” estos datos, modificarlos y luego devolver un valor nuevo.the_contentLos filtros te permiten modificar el contenido de los artículos.

utilizaradd_filter()Se proporciona una función para agregar filtros. La sintaxis es la siguiente:add_action()Idéntico. El ejemplo siguiente añade automáticamente una declaración de derechos de autor al final de todo el contenido de los artículos.

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() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $content .= '<p class="copyright">Los derechos de autor de este artículo pertenecen a este sitio web.</p>';
    }
    return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' );

Crear y usar códigos cortos.

Los códigos cortos (shortcodes) son herramientas poderosas que permiten a los usuarios incorporar contenido dinámico de plugins de manera sencilla en artículos o páginas. Se utilizan etiquetas sencillas entre corchetes, como…[my_gallery]Puedes utilizarlo.add_shortcode()Función para registrar un código corto.

Esta función acepta dos parámetros: el nombre de la etiqueta de código corto (sin corchetes) y la función de callback correspondiente. La función de callback puede recibir como parámetros los atributos (attributes) y el contenido encerrado (enclosed content). A continuación, se crea un código corto para mostrar la hora actual.

function myplugin_current_time_shortcode( $atts, $content = null ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $atts = shortcode_atts( array(
        'format' => 'Y-m-d H:i:s',
    ), $atts, 'current_time' );

// 返回处理后的内容
    return date( $atts['format'] );
}
add_shortcode( 'current_time', 'myplugin_current_time_shortcode' );

Los usuarios pueden ingresar texto en el editor.[current_time format="F j, Y"]Muestra la hora en un formato especificado.

Lecturas recomendadas Guía definitiva para el desarrollo de extensiones de WooCommerce: de principiante a experto en la creación de complementos de comercio electrónico personalizados.

Construir una interfaz de administración para el backend de un plugin

Crear una página de configuración del backend clara y fácil de usar para tu plugin es clave para ofrecer una experiencia de usuario profesional. WordPress dispone de una amplia API para simplificar este proceso.

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

Para crear una página de menú de administración independiente para tu plugin, necesitarás utilizar…add_menu_page()Función. Esta función se utiliza generalmente en...admin_menuSe llama desde los ganchos de acción (action hooks). Definen el título del menú, los permisos necesarios para acceder a él, el slug de la URL única correspondiente, la función de callback que se ejecutará al mostrar el menú, así como la imagen que se utilizará para representarlo.

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)
        80                        // 菜单位置
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

A continuación, necesitas definir las funciones de callback mencionadas anteriormente.myplugin_settings_pageEl contenido de esta función se encarga de generar el HTML de la página de configuración.

Crear una página de opciones utilizando la API de configuración

Tratar y verificar los envíos de formularios de forma manual es un proceso tedioso e inseguro. La API de Configuraciones (Settings API) de WordPress te permite automatizar estos procesos, incluyendo la verificación de campos que no cumplen con los requisitos de seguridad (como los campos que no están marcados como “ce”), el control de permisos y el almacenamiento de datos.

La creación de una página de configuración generalmente se divide en cuatro pasos: registrar los parámetros de configuración, agregar bloques de configuración, registrar campos dentro de cada bloque y, finalmente, renderizar el formulario en la función de respuesta de la página. En primer lugar,admin_initRegistra tus configuraciones en el gancho (hook).

function myplugin_settings_init() {
    // 1. 注册一个新设置(选项组名, 选项名, 清理回调)
    register_setting( 'myplugin_settings_group', 'myplugin_options' );

// 2. 添加一个设置区块
    add_settings_section(
        'myplugin_section_basic',
        '基础设置',
        'myplugin_section_basic_callback',
        'myplugin-settings' // 页面slug
    );

// 3. 在区块内添加字段
    add_settings_field(
        'myplugin_field_api_key',
        'API密钥',
        'myplugin_field_api_key_callback',
        'myplugin-settings',
        'myplugin_section_basic'
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

Luego, necesitas definir las funciones de callback (funciones de respuesta) para cada campo.myplugin_field_api_key_callbackPara renderizar el cuadro de entrada real y obtener los datos de él…myplugin_optionsObtener los valores guardados en un array.

function myplugin_field_api_key_callback() {
    $options = get_option( 'myplugin_options' );
    $value = isset( $options['api_key'] ) ? $options['api_key'] : '';
    echo '<input type="text" name="myplugin_options[api_key]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

Finalmente, utilícelo en la función de callback de la página.settings_fields()Ydo_settings_sections()Por favor, proporciona el formulario completo para que pueda ser traducido.

Seguridad, optimización y publicación de plugins

El hecho de que el desarrollo haya finalizado no significa que todo haya terminado; es igualmente importante asegurarse de que el plugin sea seguro y eficiente, y de que esté listo para su publicación.

Implementar las mejores prácticas de seguridad.

La seguridad es la línea de vida en el desarrollo de plugins. El principio fundamental es: nunca confíes en los datos introducidos por los usuarios. Para todos los datos provenientes de los usuarios o de fuentes externas…$_GET$_POST$_REQUESTSe realiza la validación, limpieza y escape de los datos.

  • Validación: verificar si los datos cumplen con el formato, el tipo o el rango esperados (por ejemplo, si es un correo electrónico o un número). Se puede usar para ello.filter_var()opreg_match()Función.
  • Limpieza (Sanitización): antes de almacenar los datos en la base de datos, se eliminan los caracteres no seguros. WordPress ofrece numerosas funciones de limpieza, como por ejemplo:sanitize_text_field()sanitize_email()sanitize_key()
  • Escape: Al enviar datos desde la base de datos al navegador, asegúrese de que los caracteres especiales como HTML estén codificados de forma segura para evitar ataques de XSS. Utilice funciones comoesc_html()esc_attr()esc_url()wp_kses_post()

Además, al manejar los permisos, siempre utilice…current_user_can()Y los permisos estándar definidos por WordPress (como…)manage_optionsedit_postsSe utiliza esto para verificar si el usuario actual tiene permiso para realizar una determinada acción. Cuando se trata de consultas a la base de datos, se da prioridad al uso de las funciones incorporadas en WordPress (como…).WP_Queryget_postsSi es necesario utilizar el SQL original, asegúrese de hacerlo de manera adecuada.$wpdb->prepare()Realiza la preparación de los parámetros para evitar inyecciones SQL.

Optimizar el rendimiento

Los plugins ineficientes pueden ralentizar todo el sitio web. La optimización puede comenzar por varios aspectos: evitar realizar un gran número de consultas o cálculos complejos en cada carga de página, y utilizar de manera adecuada la API de caché transitoria (Transients API) de WordPress para almacenar datos temporales.set_transient()Yget_transient()Es posible almacenar en caché de manera sencilla los resultados de operaciones que requieren mucho tiempo.

Asegúrate de que tus archivos de JavaScript y CSS se carguen únicamente en las páginas que necesitan ellos. Utiliza este método al registrar usuarios y al incorporar scripts en tu aplicación.wp_enqueue_script()Ywp_enqueue_style()Y configure correctamente las dependencias y condiciones de carga. En el caso de los scripts de backend, se pueden montar (es decir, integrarlos en el sistema) de la siguiente manera:admin_enqueue_scriptsGancho; en el caso de los scripts frontales, se monta (se integra) en el sistema correspondiente.wp_enqueue_scriptsGancho.

Listo para ser publicado en el directorio oficial.

Si deseas enviar un plugin al directorio oficial de plugins de WordPress.org, debes cumplir con ciertos requisitos. Asegúrate de que tu código siga los estándares de codificación de WordPress; puedes utilizar la herramienta PHP_CodeSniffer para verificarlo. Además, es importante agregar soporte completo para la internacionalización a tu plugin.__()Y_e()Las funciones como estas envuelven todas las cadenas de texto visibles para el usuario y las configuran de manera correcta.Text DomainYDomain Path

Crear un documento detallado…readme.txtEl archivo debe cumplir con los requisitos de WordPress y contener una descripción del plugin, instrucciones de instalación, respuestas a preguntas frecuentes, registros de actualizaciones, etc. Este es el documento principal que los usuarios ven en el directorio de plugins. Finalmente, realice pruebas exhaustivas de su plugin, incluyendo comprobaciones de compatibilidad en diferentes versiones de PHP, diferentes versiones de WordPress, así como en entornos en los que se hayan activado otros plugins y temas.

resúmenes

El desarrollo de plugins para WordPress es un proceso que convierte las ideas en funciones reales, y se basa en la comprensión de la arquitectura central de este sistema. Comienza estableciendo un entorno de desarrollo local profesional; al dominar los tres mecanismos de interacción clave (ganchos de acciones, ganchos de filtros y código corto), podrás expandir las funcionalidades de WordPress de manera flexible. Además, utilizando la API de configuración, podrás crear interfaces de administración de plugins seguras y profesionales. Finalmente, al seguir las mejores prácticas de seguridad, optimizar el rendimiento y cumplir con las normas de publicación, tu plugin pasará de ser un proyecto personal a un producto fiable que pueda servir a un gran número de usuarios de WordPress. Continuar aprendiendo, leer el código fuente del núcleo de WordPress y el código de plugins de calidad es la mejor forma de mejorar tus habilidades de desarrollo.

FAQ Preguntas más frecuentes

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

Es necesario contar con conocimientos básicos de HTML, CSS, PHP y JavaScript. De estos, PHP es el más esencial, ya que WordPress está escrito en PHP. También será de gran ayuda tener un conocimiento básico de la base de datos MySQL, así como estar familiarizado con los conceptos fundamentales de WordPress (como artículos, páginas, categorías y roles de usuarios).

¿Cómo depuro mi plugin para WordPress?

El método más efectivo es activar WP_DEBUG. Como se menciona en el artículo,wp-config.phpConfiguración en…define(‘WP_DEBUG’, true);Los mensajes de error se mostrarán en la pantalla o se registrarán.debug.logEn el archivo. Además, se puede utilizar…error_log()La función genera información de depuración personalizada, o se utiliza herramientas de depuración profesionales como Xdebug en combinación con un entorno de desarrollo integrado (IDE) para realizar el depurado mediante puntos de interrupción.

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

Para maximizar la compatibilidad, tu plugin debe seguir lo máximo posible los estándares de codificación y las mejores prácticas de WordPress. Evita utilizar variables o nombres de funciones globales que puedan causar conflictos (se recomienda usar clases o prefijos únicos). Utiliza los hooks estándar para agregar funcionalidades en lugar de modificar directamente los archivos del núcleo de WordPress. Cuando sea posible, proporciona filtros (Filters) que permitan a otros desarrolladores modificar la salida o el comportamiento de tu plugin.

¿Cómo debería agregar soporte para múltiples idiomas a un plugin?

Para agregar soporte de internacionalización (i18n) a un plugin, es necesario utilizar las funciones de traducción de WordPress. Primero, utiliza…__()o_e()Las funciones como `wrap_string` envuelven todas las cadenas de texto visibles para el usuario. Luego, deben configurarse correctamente en la parte superior del archivo principal del plugin.Text DomainYDomain PathFinalmente, use una herramienta como Poedit para generar el contenido deseado..potLos archivos de plantilla, a partir de los cuales los traductores pueden crear versiones en diferentes idiomas..poY.moDocumentos.

¿Cuáles son las razones comunes por las que una extensión (plugin) es rechazada al ser enviada a WordPress.org?

Las razones comunes incluyen: vulnerabilidades de seguridad (como la entrada de datos de usuarios no verificada o no escapada), incumplimientos de las directrices del directorio de plugins (como la inclusión de enlaces pagados o código encriptado), mala calidad del código (con numerosos errores o advertencias), y funciones que duplican completamente las de plugins existentes sin ninguna mejora significativa.readme.txtEl archivo no cumple con los requisitos establecidos, o el plugin utiliza una licencia no permitida. Antes de enviarlo, asegúrese de leer atentamente las guías oficiales y realizar una revisión completa del mismo.