Guía de introducción al desarrollo de complementos de WordPress: crea tu primer complemento personalizado desde cero.

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

Preparación del entorno de desarrollo para plugins de WordPress

Antes de comenzar a escribir el código, necesitas un entorno de desarrollo adecuado. Esto no solo mejorará tu eficiencia de desarrollo, sino que también te ayudará a depurar y probar los plugins de manera más efectiva. En primer lugar, debes configurar un entorno de ejecución para WordPress en tu ordenador local. Puedes utilizar entornos de desarrollo integrados como XAMPP, MAMP o Local by Flywheel, los cuales te permitirán instalar rápidamente PHP, MySQL y los servidores Apache/Nginx. En cuanto a los archivos del núcleo de WordPress, se recomienda descargar e instalar la versión más reciente y estable de su sitio web oficial.

Asegúrate de que tu versión de PHP cumpla con los requisitos mínimos de WordPress y activa la función de reporte de errores; esto es esencial para el depurado. Puedes hacerlo en…wp-config.phpAñada el siguiente código al archivo para activar el modo de depuración:

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

Además, es esencial contar con un editor de código potente, como Visual Studio Code, PhpStorm o Sublime Text. Estos editores suelen ofrecer resaltado de sintaxis, sugerencias de código e integración con sistemas de control de versiones, lo que mejora significativamente la experiencia de programación. Finalmente, se recomienda instalar herramientas de desarrollo en el navegador y considerar el uso de extensiones diseñadas específicamente para WordPress, lo que facilita la verificación de los “hooks” (funciones de conexión), la consulta de la base de datos y el monitoreo del rendimiento del sitio web.

Lecturas recomendadas Guía de introducción al desarrollo de complementos de WordPress: crea tu primer módulo funcional de cero a uno.

Crea tu primer archivo de plugin.

La forma más básica de un plugin para WordPress es un archivo PHP. Todos los plugins se almacenan en un determinado directorio dentro del sistema de WordPress./wp-content/plugins/En el directorio, cada plugin puede ser un archivo PHP independiente o una carpeta que contenga varios archivos.

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

Primero, crea una carpeta única para tu plugin, por ejemplo:my-first-pluginDentro de esta carpeta, cree el archivo principal del plugin, que suele llamarse con el mismo nombre que la carpeta.my-first-plugin.phpEl inicio de este archivo debe contener una nota de cabecera del plugin que cumpla con los estándares de WordPress. Esta nota proporciona al sistema de WordPress información básica sobre el plugin.

Ejemplo de comentario de cabecera en el archivo del plugin principal:

<?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
 * Domain Path:       /languages
 */

El campo “Nombre del Plugin” en esta nota es obligatorio, ya que determina el nombre que se mostrará para el plugin en la interfaz de administración en segundo plano. Otras informaciones, como la versión y el autor, ayudan a los usuarios a conocer mejor el plugin. Después de crear este archivo, colócalo en el lugar adecuado./wp-content/plugins/my-first-plugin/Directorio. En este momento, inicie sesión en la página de administración de su WordPress y vaya a la sección de “Plugins”. Debería ver un nuevo plugin llamado “Mi primer plugin personalizado”, al que podrá activar. Aunque por el momento no hace nada, ya ha creado el esqueleto básico de un plugin.

Proceso de activación y desactivación de plugins

Los plugins suelen necesitar realizar algunas tareas de inicialización y limpieza al activarse o desactivarse, como crear tablas en la base de datos, establecer opciones predeterminadas o eliminar datos temporales. WordPress gestiona estos procesos mediante dos ganchos (hooks) especiales:register_activation_hookYregister_deactivation_hook

Lecturas recomendadas Desde cero hasta el dominio: guía completa y mejores prácticas para el desarrollo de complementos de WordPress.

Puedes definir estos “ganchos” (hooks) en el archivo principal del plugin. Por ejemplo, cuando el plugin se active, podríamos querer escribir una opción de configuración predeterminada en la base de datos; cuando el plugin se desactive, podría ser necesario eliminar esa opción. El código para implementar esto es el siguiente:

// 定义插件激活时执行的函数
function my_plugin_activate() {
    // 添加一个默认选项到数据库
    add_option('my_plugin_default_option', '这是默认值');
    // 或者可以在这里初始化自定义数据库表(需要更复杂的SQL)
}
register_activation_hook(__FILE__, 'my_plugin_activate');

// 定义插件停用时执行的函数
function my_plugin_deactivate() {
    // 删除之前创建的选项
    delete_option('my_plugin_default_option');
    // 注意:通常不在停用钩子中删除数据,以免用户重新激活时丢失设置
    // 更常见的清理工作在卸载钩子中处理
}
register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

Cabe señalar que…register_deactivation_hookGeneralmente se utiliza para tareas de limpieza de bajo nivel; sin embargo, la eliminación permanente de datos (como borrar tablas de una base de datos) debe realizarse a través de los mecanismos de desinstalación. La función de desinstalación debe ser configurada adecuadamente para que se encargue de esta tarea.register_uninstall_hookRegístrese. El uso adecuado de estos “ganchos” (hookes) asegurará que el comportamiento de su plugin sea correcto y que no se dejen datos redundantes en el sitio web.

Comprender y utilizar ganchos (hooks) y filtros (filters)

El núcleo del desarrollo de plugins para WordPress reside en el mecanismo de “ganchos” (Hooks), que te permite insertar código personalizado en momentos o puntos específicos para modificar o expandir las funciones principales de WordPress. Los ganchos se dividen principalmente en dos tipos: Acciones (Actions) y Filtros (Filters).

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

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 en la parte superior de la página web (wp_head) o durante la inicialización en el panel de administración.admin_initPuedes utilizarlo.add_action()Se trata de una función que permite “montar” (es decir, incorporar) tu código en el sistema. A continuación, se muestra un ejemplo sencillo: esta función añade automáticamente un texto personalizado al final de cada artículo.

function add_custom_footer_to_content($content) {
    if (is_single()) { // 仅在单篇文章页面添加
        $custom_text = '<p><em>¡Gracias por leer este artículo!</em></p>';
        $content .= $custom_text;
    }
    return $content;
}
// 使用‘the_content’过滤器,注意这是一个过滤器(Filter)的例子
add_filter('the_content', 'add_custom_footer_to_content');

Como muestra el código anterior, en realidad estamos utilizando filtros (filters). Los ganchos de los filtros (filter hooks) se utilizan para modificar los datos que se les pasan. La principal diferencia entre ellos y las acciones (actions) es que los filtros deben devolver los valores modificados. Algunos ejemplos típicos de filtros incluyen…the_content(Modificación del contenido del artículo)the_title(Cambia el título) Yexcerpt_length(Modificación de la longitud del resumen). Correspondiente a ello…add_filter()La función se utiliza para montar (o asociar) una función de filtro.

Crear ganchos personalizados para que otros los puedan extender.

Un plugin bien diseñado no solo utiliza los ganchos (hooks) del núcleo de WordPress, sino que también proporciona sus propios ganchos personalizados para que otros desarrolladores puedan expandir sus funcionalidades.do_action()Las funciones pueden crear un gancho de acción (action hook) para ser utilizado.apply_filters()Es posible crear un gancho (hook) de filtro.

Lecturas recomendadas Guía completa para el desarrollo de plugins para WordPress: Cómo crear tu propio plugin desde cero

Por ejemplo, antes de que tu plugin procese ciertos datos, podrías proporcionar un filtro que permita a otros modificar los parámetros de entrada.

// 定义插件的主要处理函数
function my_plugin_process_data($input_data) {
    // 在核心处理前,允许其他开发者通过过滤器修改 $input_data
    $filtered_data = apply_filters('my_plugin_filter_input', $input_data);

// ... 使用 $filtered_data 进行核心处理 ...

// 在处理完成后,触发一个动作钩子,通知其他开发者
    do_action('my_plugin_after_processing', $filtered_data);

return $result;
}

Al crear ganchos personalizados, tu plugin adquiere una buena capacidad de expansión, siguiendo así la filosofía de desarrollo de WordPress en sí mismo.

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.

Añadir una página de administración y opciones de configuración para el plugin.

La mayoría de los plugins prácticos requieren una interfaz de administración en el backend que permita a los administradores del sitio web configurar las opciones del plugin. WordPress ofrece una API amplia para crear menús de administración y páginas de configuración.

Primero, necesitas utilizar…add_action('admin_menu', 'your_function')Se utiliza un “gancho” (hook) para registrar un elemento de menú. En la función correspondiente, se procede a realizar la registración de dicho elemento.add_menu_page()oadd_submenu_page()Funciones para agregar menús principales o submenús. A continuación, se muestra un ejemplo básico de cómo agregar un menú principal y configurar una página:

// 钩入 admin_menu 来添加管理菜单
function my_plugin_add_admin_menu() {
    add_menu_page(
        '我的插件设置',           // 页面标题
        '我的插件',               // 菜单标题
        'manage_options',         // 权限(管理员)
        'my-plugin-settings',     // 菜单slug
        'my_plugin_settings_page', // 用于显示页面内容的回调函数
        'dashicons-admin-generic', // 图标(Dashicon)
        80                         // 菜单位置
    );
}
add_action('admin_menu', 'my_plugin_add_admin_menu');

// 定义设置页面的显示内容
function my_plugin_settings_page() {
    // 检查用户权限
    if (!current_user_can('manage_options')) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1><?php echo esc_html(get_admin_page_title()); ?></h1>
        <form action="/es/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段和非ce字段
            settings_fields('my_plugin_options_group');
            do_settings_sections('my-plugin-settings');
            submit_button('保存设置');
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Campos de configuración para el registro y verificación

No basta con tener las páginas; es necesario utilizar la API de Configuraciones de WordPress (WordPress Settings API) para registrar, almacenar y verificar las opciones de configuración de manera segura. Este proceso implica el uso de…register_setting()add_settings_section()Yadd_settings_field()y otras funciones.

El siguiente código muestra cómo registrar un grupo de opciones de configuración y un campo de texto:

// 初始化插件设置
function my_plugin_settings_init() {
    // 注册一个设置选项组及其数据
    register_setting(
        'my_plugin_options_group', // 选项组名,需与settings_fields()参数一致
        'my_plugin_settings',      // 存储在wp_options表中的选项名
        'my_plugin_sanitize_input' // 可选的验证回调函数
    );

// 添加一个设置区域
    add_settings_section(
        'my_plugin_section_main',
        '主要设置',
        null, // 区域描述的回调函数,可为空
        'my-plugin-settings' // 所属页面的slug
    );

// 向该区域添加一个具体的字段
    add_settings_field(
        'my_plugin_field_text',
        '示例文本字段',
        'my_plugin_field_text_render', // 渲染字段HTML的回调函数
        'my-plugin-settings',
        'my_plugin_section_main'
    );
}
add_action('admin_init', 'my_plugin_settings_init');

// 渲染文本输入字段的函数
function my_plugin_field_text_render() {
    $options = get_option('my_plugin_settings');
    $value = $options['text_field'] ?? ''; // PHP 7.0+ 空合并运算符
    ?>
    <input type='text' name='my_plugin_settings[text_field]' value='<?php echo esc_attr($value); ?>'>
    <?php
}

// 清理和验证输入的函数
function my_plugin_sanitize_input($input) {
    $sanitized_input = [];
    if (isset($input['text_field'])) {
        // 清理文本输入,移除非法标签
        $sanitized_input['text_field'] = sanitize_text_field($input['text_field']);
    }
    return $sanitized_input;
}

A través de la API de Configuraciones (Settings API), WordPress gestiona automáticamente el almacenamiento de opciones, la verificación de seguridad y los controles de permisos, lo que simplifica significativamente el proceso de desarrollo y mejora la seguridad.

resúmenes

A través de esta guía, hemos seguido de manera sistemática los pasos principales para el desarrollo de plugins en WordPress: desde la configuración del entorno y la creación de los archivos básicos del plugin, hasta la comprensión y utilización del mecanismo de ganchos (hooks) del sistema, y finalmente, la adición de una interfaz de administración profesional y opciones de configuración para el plugin. Cada etapa incluye fragmentos de código clave y prácticas estándar. El núcleo del desarrollo de plugins reside en el aprovechamiento del extenso sistema de ganchos de WordPress para expandir sus funcionalidades, al tiempo que se siguen las especificaciones de su API para garantizar la seguridad y la compatibilidad. Recuerda que comenzar con una idea sencilla, ir añadiendo funcionalidades poco a poco y realizar pruebas exhaustivas durante todo el proceso de desarrollo es el camino más efectivo para crear plugins de calidad. A continuación, puedes explorar temas más avanzados, como la creación de tipos de artículos personalizados, la adición de códigos cortos (shortcodes), el manejo de solicitudes AJAX y la internacionalización de tu plugin.

FAQ Preguntas más frecuentes

¿Es necesario dominar PHP para desarrollar un plugin de WordPress?

Sí, es esencial tener una base sólida en PHP, ya que el núcleo de WordPress y sus plugins están escritos en este lenguaje. Debes comprender la sintaxis de PHP, las funciones, los conceptos de programación orientada a objetos, entre otros. Además, tener un conocimiento básico de HTML, CSS y JavaScript es de gran ayuda para crear interfaces de usuario y lograr interacciones efectivas.

¿Cuántos archivos debe contener un plugin?

No existe ninguna exigencia obligatoria. Un plugin puede contener únicamente un archivo principal en PHP. Sin embargo, a medida que las funciones se vuelven más complejas, es conveniente modularizar el código en varios archivos.admin.phpTratamiento en segundo plano.public.phpTratar la parte frontal (frontend).includesEs una mejor práctica almacenar las funciones comunes en carpetas, ya que esto ayuda a organizar y mantener el código.

¿Por qué mi plugin hace que la página web muestre una pantalla en blanco después de ser activado?

Esto generalmente es causado por un error fatal (Fatal Error), como un error de sintaxis, la llamada a una función o clase que no existe. Por favor, asegúrese de que haya realizado todas las comprobaciones necesarias antes de continuar.wp-config.phpSe ha activado en…WP_DEBUGPatrón, y compruébalo.wp-content/debug.logInformación de error en el archivo. Puede recuperar el acceso al sitio web rápidamente desactivando su plugin a través de FTP o un administrador de archivos (cambiando el nombre de la carpeta del plugin).

¿Cómo manejar de manera segura los datos que los usuarios envían desde el lado del cliente (frontend)?

Nunca se debe confiar en los datos introducidos por los usuarios. Antes de procesar cualquier información proveniente de formularios, parámetros de URL o cookies, es necesario realizar verificaciones, limpiezas y operaciones de escape (es decir, convertir ciertos caracteres en su forma adecuada para evitar problemas de seguridad). WordPress ofrece una gran cantidad de funciones de seguridad para ello.sanitize_text_field()(Limpieza del texto)esc_url()URLs escapados.wp_kses_post()(Filtrar el contenido utilizando los etiquetas HTML permitidas) yintval()(Conviértalo a un número entero). Al imprimir los datos en una página HTML, asegúrese de utilizar…esc_html()esc_attr()Es necesario escapar de las funciones, como las de JavaScript, para que puedan ser utilizadas en otros lenguajes de programación.

¿Cómo puedo hacer que el texto de mi plugin sea compatible con múltiples idiomas?

Esto se debe lograr mediante la internacionalización (i18n). En tu código, debes reemplazar todas las cadenas de texto que necesiten ser traducidas por sus equivalentes en los idiomas deseados.__()o_e()Envoltura de funciones. Luego, establezca correctamente los comentarios en la parte superior del plugin.Text DomainYDomain PathUtiliza herramientas como Poedit para crearlo..potArchivos de plantilla, y generar versiones de estos en diferentes idiomas..poY.moEl archivo de traducción se carga automáticamente según la configuración de idioma del sitio web. WordPress carga las traducciones correspondientes de forma automática.