Guía para principiantes en el desarrollo de plugins para WordPress: Crea tu primer plugin personalizado desde cero

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

Los plugins de WordPress son esenciales para expandir las funcionalidades de un sitio web, ya que te permiten agregar nuevas características de manera modular, sin necesidad de modificar el código central de WordPress. Al desarrollar tus propios plugins, puedes crear funciones completamente personalizadas que satisfagan tus necesidades específicas y garantizar su compatibilidad con otros temas y plugins. Esta guía te guiará a través de todo el proceso para crear un plugin de WordPress con funcionalidades completas y una estructura bien organizada.

Estructura y normas básicas de los plugins para WordPress

Un plugin estándar para WordPress debe seguir una estructura de archivos y normas específicas para garantizar que sea reconocido correctamente por el sistema de WordPress, funcione de manera segura y sea fácil de mantener.

Crear el archivo principal del plugin

Cada plugin debe tener un archivo PHP principal, cuyo nombre suele coincidir con el nombre de la carpeta que contiene el plugin. Al principio de este archivo debe estar incluida una anotación de cabecera que contenga información específica sobre el plugin; es a través de esta anotación que WordPress puede reconocer el plugin.

Lecturas recomendadas Análisis en profundidad del desarrollo de plugins de WordPress: desde cero hasta una personalización eficiente

Cree un archivo llamado `plugin_name` en el directorio de plugins. my-first-plugin.php El archivo, y añada la siguiente información de cabecera:

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:       这是一个用于学习的简单WordPress插件示例。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Seguir las mejores prácticas de seguridad.

Todo el código de los plugins debe ser sometido a controles de seguridad para evitar que sea accedido directamente. Además, se debe utilizar un prefijo único para nombrar todas las funciones, clases y constantes, a fin de evitar conflictos con el tema principal o con otros plugins.

En el archivo principal del plugin, se debe agregar el código de protección de seguridad inmediatamente después de las notas de cabecera, y utilizar un prefijo único (por ejemplo, `security_`). mfp_Utiliza ese nombre para denominar tu función:

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

// 使用唯一前缀定义一个函数
function mfp_display_greeting() {
    echo '<p>¡Hola! Bienvenido a utilizar mi primer plugin.</p>';
}

Implementar la funcionalidad principal: acciones y filtros.

El mecanismo de extensión central de WordPress se basa en los llamados “ganchos” (Hooks), que se dividen en “Acciones” (Actions) y “Filtros” (Filters). Comprender y utilizarlos correctamente es clave para el desarrollo de plugins.

Usar ganchos de acción para agregar funcionalidades.

Los ganchos de acción (action hooks) te permiten ejecutar tu propio código en momentos específicos o cuando ocurren ciertos eventos. Por ejemplo, para agregar un texto en la parte inferior de la página, puedes utilizar estos ganchos. wp_footer Acción.

Lecturas recomendadas Desarrollo de plugins para WordPress: Cómo crear plugins con funciones personalizadas desde cero

Montar la función definida anteriormente en… wp_footer En el gancho:

// 将函数挂载到 wp_footer 动作钩子
add_action( 'wp_footer', 'mfp_display_greeting' );

De esta manera, cuando WordPress llegue al pie de la página, se realizará la llamada correspondiente. mfp_display_greeting Función que emite un saludo.

Modificar el contenido utilizando los ganchos de los filtros.

Los ganchos de filtro (filter hooks) se utilizan para modificar datos. Reciben un valor, lo procesan y luego lo devuelven. Por ejemplo, para cambiar el sufijo predeterminado de los títulos de los artículos, se pueden utilizar estos ganchos. the_title Filtros.

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

Cree una función para modificar el título de un artículo y añádala a un filtro:

// 定义一个函数来修改文章标题
function mfp_modify_title( $title, $id = null ) {
    // 仅在前端修改非管理员页面的标题
    if ( ! is_admin() && in_the_loop() ) {
        $title .= ' - 来自我的插件';
    }
    return $title;
}
// 将函数挂载到 the_title 过滤器钩子,参数3是优先级,参数4是接受的参数个数
add_filter( 'the_title', 'mfp_modify_title', 10, 2 );

Construir una interfaz de gestión de complementos.

La mayoría de los plugins requieren una página de configuración en el backend que permita a los administradores del sitio web ajustar las opciones del plugin. WordPress ofrece una amplia API para crear menús y formularios de administración estándar.

Crear la página de configuración del plugin

utilizar add_menu_page() o add_options_page() Las funciones pueden agregar una página de administración a tu plugin. Por lo general, esta página se encuentra en el menú de “Ajustes”.

Lecturas recomendadas Dominar el desarrollo de plugins para WordPress desde cero: principios, práctica y técnicas avanzadas

Cree una función para registrar y administrar el menú, y luego monte dicho menú en la aplicación. admin_menu Acción:

// 添加插件设置页面到后台菜单
function mfp_add_admin_menu() {
    add_options_page(
        '我的第一个插件设置', // 页面标题
        '我的插件设置',       // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单slug
        'mfp_render_settings_page' // 用于渲染页面的回调函数
    );
}
add_action( 'admin_menu', 'mfp_add_admin_menu' );

// 渲染设置页面的回调函数
function mfp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>La configuración de mi primer complemento</h1>
        <form action="/es/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfp_settings_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Opciones de registro y configuración de procesamiento

La API de configuración de WordPress puede manejar de manera segura el registro, la validación y el almacenamiento de opciones. Es necesario definir los campos de configuración y las secciones correspondientes, y utilizar una función de procesamiento para guardar los datos.

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.

Continúe agregando el siguiente código al archivo principal del plugin para registrar las configuraciones:

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置组和选项
    register_setting( 'mfp_settings_group', 'mfp_settings', 'mfp_sanitize_settings' );

// 在插件设置页面添加一个节
    add_settings_section(
        'mfp_section_basic',
        '基本设置',
        null,
        'my-first-plugin'
    );

// 向节中添加一个字段
    add_settings_field(
        'mfp_greeting_text',
        '问候语文本',
        'mfp_greeting_text_render',
        'my-first-plugin',
        'mfp_section_basic'
    );
}
add_action( 'admin_init', 'mfp_settings_init' );

// 渲染问候语文本输入字段
function mfp_greeting_text_render() {
    $options = get_option( 'mfp_settings' );
    $value = isset( $options['greeting_text'] ) ? $options['greeting_text'] : '你好,世界!';
    echo '<input type="text" name="mfp_settings[greeting_text]" value="' . esc_attr( $value ) . '" class="regular-text">';
}

// 清理和验证设置输入
function mfp_sanitize_settings( $input ) {
    $sanitized = [];
    if ( isset( $input['greeting_text'] ) ) {
        $sanitized['greeting_text'] = sanitize_text_field( $input['greeting_text'] );
    }
    return $sanitized;
}

Internacionalización de plugins y preparación para su implementación

Para que el complemento pueda ser utilizado por usuarios de todo el mundo y finalmente sea lanzado al mercado, es necesario realizar tareas de internacionalización y optimización del código.

Implementar la internacionalización del texto

Utilizando WordPress __()_e() Utiliza funciones como estas para encapsular todas las cadenas de texto que necesitan ser traducidas, y carga correctamente los campos de texto correspondientes.

Modifica tu función de salida para que soporte la traducción.

function mfp_display_greeting() {
    $options = get_option( ‘mfp_settings’ );
    $greeting = isset( $options[‘greeting_text’] ) ? $options[‘greeting_text’] : __( ‘你好,世界!’, ‘my-first-plugin’ );
    echo ‘<p>’ . esc_html( $greeting ) . ‘</p>’;
}

// 在插件加载时加载翻译文件
function mfp_load_textdomain() {
    load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘plugins_loaded’, ‘mfp_load_textdomain’ );

Optimizar el código y crear paquetes de publicación

Después de completar el desarrollo, es necesario eliminar el código de depuración y asegurarse de que todas las funciones tengan un prefijo único. A continuación, compresa todo el directorio del plugin en un archivo ZIP, el cual podrá ser subido y instalado a través de la interfaz administrativa de WordPress.

Asegúrese de que el archivo principal contenga un procedimiento de desinstalación estándar para limpiar las opciones de la base de datos cuando el usuario elimina el complemento. Esto se logra registrando un gancho de desinstalación (un “uninstall hook”).

// 插件卸载时的清理操作
register_uninstall_hook( __FILE__, ‘mfp_uninstall’ );
function mfp_uninstall() {
    delete_option( ‘mfp_settings’ );
}

resúmenes

Este artículo presenta en detalle el proceso completo para crear un plugin personalizado para WordPress desde cero. Comenzamos entendiendo la estructura básica de los plugins y las normas de seguridad, luego profundizamos en el sistema de ganchos (acciones y filtros) del núcleo de WordPress, y aprendimos cómo crear una interfaz de administración en el backend con páginas de configuración. Finalmente, también analizamos los aspectos de internacionalización de los plugins, la optimización del código y los pasos necesarios para su implementación final.

Recuerda que el desarrollo de plugins de calidad no se trata solo de implementar funcionalidades, sino también de garantizar la seguridad y la mantenibilidad del código, así como el cumplimiento con los estándares de WordPress. Te recomiendo que estudies a fondo el manual oficial de plugins de WordPress, que sigas las normas de codificación y que practiques constantemente en proyectos reales.

FAQ Preguntas más frecuentes

¿Qué conocimientos previos se necesitan para desarrollar plugins para WordPress?

Es muy útil que tengas conocimientos básicos de programación en PHP, incluyendo el manejo de variables, funciones, arrays y condiciones lógicas. También sería beneficioso que tengas un conocimiento básico de HTML y CSS, así como una comprensión de las operaciones básicas de WordPress y de su estructura backend. Conocer los principios de la programación orientada a objetos (POO) sería una ventaja adicional para un desarrollo más avanzado.

我必须使用类(Class)来编写插件吗?

No necesariamente. Para plugins sencillos, es totalmente viable utilizar programación procedural (un conjunto de funciones), que es precisamente el método empleado en los ejemplos de este artículo. Sin embargo, para plugins más complejos y con más funciones, es una mejor opción utilizar programación orientada a objetos (POO) y organizar el código en forma de clases. Esto permite organizar el código de manera más eficiente, evitar conflictos de nombres y mejorar la mantenibilidad.

¿Cómo depuro el código de mi plugin para WordPress?

El primer paso es activar el modo de depuración de WordPress. En el sitio web… wp-config.php En el documento, se indicará que... WP_DEBUG Los constantes se establecen en trueEsto mostrará errores de PHP, notificaciones y advertencias en la página. Además, puedes utilizar… error_log() La función escribe información de depuración en el registro de errores del servidor, o utiliza plugins de depuración especializados (como Query Monitor) para verificar problemas relacionados con las consultas a la base de datos, la ejecución de los hooks y el rendimiento del sistema.

¿Cómo garantizar la seguridad en el desarrollo de plugins?

Las medidas clave para garantizar la seguridad incluyen: siempre verificar y limpiar la entrada del usuario (utilizando…). sanitize_text_field(), esc_html(), wp_kses_post() (Funciones como “esperar”); se utiliza para todas las consultas a la base de datos. $wpdb Los métodos de la clase deben utilizarse junto con la instrucción `prepare` para prevenir inyecciones SQL; todo el contenido dinámico que se envía al navegador debe ser escapado (es decir, sus caracteres especiales deben ser reemplazados por sus equivalentes seguros); además, se deben emplear los campos no verificados (nonce) y los controles de permisos incorporados en WordPress.current_user_can()Se utilizan para proteger los formularios y las solicitudes AJAX.