Guía para el desarrollo de plugins para WordPress: Cómo crear módulos de funcionalidades personalizadas desde cero

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

La gran fuerza de WordPress no radica solo en sus funciones básicas, sino también en su capacidad para expandirse de manera ilimitada mediante plugins. Cuando necesitas agregar una función específica a tu sitio web que no esté disponible en los plugins existentes, aprender a desarrollar plugins se vuelve de vital importancia. Esta guía te guiará desde los conceptos básicos hasta que hayas creado tu primer plugin de WordPress con funciones completas, permitiéndote dominar las habilidades esenciales del desarrollo personalizado.

Entorno de desarrollo de plugins y estructura básica

Antes de comenzar a escribir el código, necesitas un entorno de desarrollo adecuado y una estructura de proyecto clara. Esto no solo te permitirá trabajar de manera eficiente, sino que también asegurará que el plugin cumpla con los estándares de WordPress, lo que facilitará su mantenimiento y distribución en el futuro.

Crear un entorno de desarrollo local

Se recomienda utilizar software de servidores locales como XAMPP, MAMP o Local by Flywheel para configurar un entorno WordPress. Esto te permitirá realizar pruebas y depuraciones de manera segura en tu propio ordenador. Además, asegúrate de que tu editor de código (como VS Code o PhpStorm) soporte la resaltación del lenguaje PHP y las sugerencias de código, lo que mejorará significativamente la eficiencia del desarrollo.

Lecturas recomendadas Guía para principiantes en el desarrollo de plugins para WordPress: Crea tu primer extensión desde cero

Comprender la composición básica de los plugins

El plugin más simple para WordPress puede constar de un solo archivo, pero un plugin bien estructurado suele incluir varios directorios y archivos. El archivo más importante es el archivo principal del plugin, el cual debe contener una anotación de cabecera específica para informar al sistema de WordPress sobre la existencia de dicho plugin.

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

El archivo principal del plugin suele llevar el nombre de su función, por ejemplomy-custom-functionality.phpEn su parte superior, debe contener el encabezado de información estándar del plugin.

<?php
/**
 * Plugin Name:       我的定制功能模块
 * Plugin URI:        https://example.com/my-custom-plugin
 * Description:       这是一个用于演示的WordPress定制功能插件。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-custom-plugin
 */

Esta nota es la fuente de información que el plugin reconoce y muestra en la página de “Plugins” del backend de WordPress.Text DomainSe utiliza para la traducción internacional. A continuación, todo el código de las funciones debe escribirse en este archivo o en otros archivos que sean importados a partir de este.

Desarrollo central: Ganchos de acción y filtros

La arquitectura de plugins de WordPress se basa en un sistema de “ganchos” (Hooks), que constituye la piedra angular de su capacidad de expansión. Comprender y utilizar estos ganchos de manera experta es esencial para el desarrollo de plugins. Los ganchos se dividen principalmente en dos tipos: los ganchos de acción (Action Hooks) y los ganchos de filtro (Filter Hooks).

Usar ganchos de acción para agregar funcionalidades.

Los ganchos de acción (action hooks) te permiten “inyectar” y ejecutar tus propias funciones PHP en momentos específicos o cuando ocurren ciertos eventos. Por ejemplo, podrías querer realizar una acción al publicar un artículo, o agregar un código personalizado en el pie de página de una página web.

Lecturas recomendadas De cero a uno: Guía completa y mejores prácticas para el desarrollo de plugins para WordPress

Puedes usaradd_action()La función permite conectar tu función personalizada a un gancho de acción específico. El ejemplo a continuación muestra cómo agregar un cuadro de metadatos personalizado en la página de edición de artículos del panel de administración.

// 将函数挂载到‘add_meta_boxes’这个动作钩子
add_action( 'add_meta_boxes', 'mcp_add_custom_meta_box' );

function mcp_add_custom_meta_box() {
    add_meta_box(
        'mcp_custom_box_id',          // 元框的唯一ID
        '自定义设置',                 // 元框标题
        'mcp_custom_meta_box_html',   // 回调函数,用于输出HTML内容
        'post',                       // 在‘文章’编辑页面显示
        'side',                       // 显示在侧边栏
        'high'                        // 优先级
    );
}

// 定义输出元框HTML内容的回调函数
function mcp_custom_meta_box_html( $post ) {
    // 获取已保存的值
    $value = get_post_meta( $post->ID, '_mcp_custom_field', true );
    // 输出一个非安全字段
    echo '<label for="mcp_field">自定义字段:</label>';
    echo '<input type="text" id="mcp_field" name="mcp_field" value="' . esc_attr( $value ) . '" />';
}

Modificar datos utilizando los ganchos (hooks) de los filtros

Los ganchos de filtro te permiten modificar cualquier dato que genere WordPress durante su proceso de procesamiento. A diferencia de los ganchos de acción, las funciones de filtro deben recibir un valor y deben devolver un valor (modificado). Puedes utilizarlos para realizar ajustes o transformaciones en los datos antes de que sean almacenados o utilizados por el sistema.add_filter()Se utiliza una función para agregar filtros.

Por ejemplo, al modificar el final del contenido de un artículo, se añade automáticamente una declaración de derechos de autor.

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_filter( 'the_content', 'mcp_add_copyright_to_content' );

function mcp_add_copyright_to_content( $content ) {
    // Solo tiene efecto en la página de un artículo individual
    if ( is_single() ) {
        $copyright_text = '<p><em>El derecho de autor de este artículo pertenece a este sitio web. Si desea volver a publicarlo, debe indicar la fuente.</em></p>';
        $content .= $copyright_text;
    }
    // 必须返回修改后的内容
    return $content;
}

Implementación de la gestión de datos de plugins

Los plugins suelen necesitar almacenar, leer y actualizar datos. WordPress ofrece una potente API de opciones (Options API) y una API de metadatos de artículos (Article Metadata API) para gestionar estas necesidades de manera segura, evitando la necesidad de acceder directamente a la base de datos.

Usar la API de opciones para almacenar configuraciones.

Para la configuración global del complemento (como la clave API, el estado de activación, etc.), se debe utilizar la API de opciones. Proporcionaadd_option()get_option()update_option()Se utilizan funciones como estas para gestionar datos basados en pares de clave-valor.

Por ejemplo, se puede crear una sencilla configuración de encendido/apagado para el complemento.

Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: cree su primer módulo de funcionalidad extendida desde cero.

// 在插件激活时设置一个默认选项(通常写在激活钩子函数里)
register_activation_hook( __FILE__, 'mcp_plugin_activate' );
function mcp_plugin_activate() {
    if ( false === get_option( 'mcp_feature_enabled' ) ) {
        add_option( 'mcp_feature_enabled', 'yes' );
    }
}

// 在代码中获取这个选项的值
$is_enabled = get_option( 'mcp_feature_enabled', 'yes' ); // 第二个参数是默认值
if ( $is_enabled === 'yes' ) {
    // 执行功能
}

Guardar y leer metadatos de artículos

Para acceder a los datos asociados con un artículo específico, una página o un tipo de artículo personalizado (como los campos personalizados que se muestran en el ejemplo del cuadro de metadatos anterior), es necesario utilizar la API de metadatos de artículo (Post Meta). La función clave es…update_post_meta()Yget_post_meta()

Necesitas escucharsave_postSe utilizan ganchos de acción (action hooks) para guardar los datos introducidos por el usuario en los cuadros meta del frontend. Al realizar el almacenamiento, es necesario realizar verificaciones de seguridad (comprobación de Nonce) y de permisos.

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.
add_action( 'save_post', 'mcp_save_custom_field_data' );

function mcp_save_custom_field_data( $post_id ) {
    // 检查Nonce字段(应在元框HTML中输出wp_nonce_field)
    if ( ! isset( $_POST['mcp_meta_box_nonce'] ) || ! wp_verify_nonce( $_POST['mcp_meta_box_nonce'], 'mcp_save_data' ) ) {
        return;
    }
    // 检查自动保存
    if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
        return;
    }
    // 检查用户权限
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    // 安全地获取并保存字段数据
    if ( isset( $_POST['mcp_field'] ) ) {
        $my_data = sanitize_text_field( $_POST['mcp_field'] );
        update_post_meta( $post_id, '_mcp_custom_field', $my_data );
    }
}

Crear la página de administración de plugins

Para los plugins de funcionalidad compleja, suele ser necesario una página de configuración de administración dedicada que permita a los administradores del sitio web ajustar las diferentes opciones del plugin. WordPress ofrece una amplia API para crear menús y páginas de administración con un estilo uniforme.

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

utilizaradd_menu_page()La función permite agregar un elemento de menú de nivel superior en la barra de navegación izquierda del lado posterior de tu plugin. Es necesario especificar el título de la página, el nombre del menú, los permisos requeridos, el alias del menú, así como la función de callback que se utilizará para mostrar el contenido de la página.

add_action( 'admin_menu', 'mcp_register_admin_menu' );

function mcp_register_admin_menu() {
    add_menu_page(
        'Configuración de mi plugin',   // Título de la página
        'Mi plugin',   // Nombre del menú
        'manage_options',   // Permisos necesarios (generalmente manage_options)
        'mcp-plugin-settings',   // Alias del menú (slug)
        'mcp_render_settings_page',   // Función de devolución para renderizar la página de configuración
        'dashicons-admin-generic',   // Ícono (usando Dashicons)
        80   // Posición del menú
    );
}

// Define la función para renderizar la página de configuración
function mcp_render_settings_page() {
    // Comprobar los permisos del usuario
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }
    ?&gt;
    <div class="wrap">
        <h1>¿¿¿¿php echo esc_html( get_admin_page_title() ); ?&gt;</h1>
        <form action="/es/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、非安全字段等(需要配合settings API使用)
            settings_fields( 'mcp_settings_group' );
            do_settings_sections( 'mcp-plugin-settings' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="es"/></form>
    </div>
    ¿php?  
}

Construir formularios utilizando la API de configuración

Para manejar las opciones de los formularios de manera más segura y regular, se recomienda encarecidamente utilizar la API de configuraciones (Settings API) de WordPress. Esta API se encarga automáticamente de la validación de los valores de tipo Nonce, los controles de permisos, el almacenamiento de datos y la visualización de mensajes de error. Los pasos clave para implementarla incluyen:register_setting()Configuraciones de registro, en uso.add_settings_section()Añadir una zona de configuración, así como su uso.add_settings_field()Añade los campos de configuración específicos.

Esto asegura que la página de configuración de tu plugin sea consistente con el estilo del núcleo de WordPress y que siga las mejores prácticas de seguridad.

resúmenes

A través de esta guía, has seguido el camino esencial para desarrollar plugins para WordPress: comenzando por establecer el entorno de desarrollo y comprender la estructura básica, pasando por el sistema de hooks, que es el corazón de la extensibilidad de WordPress, hasta aprender cómo agregar o modificar funciones mediante acciones y filtros. Luego, has dominado el uso de la API de opciones y la API de metadatos de artículos para gestionar los datos de los plugins de manera segura. Finalmente, has comprendido cómo crear una página de configuración para tu plugin que sea profesional y segura.

El desarrollo de plugins es un proceso de gran práctica; el verdadero dominio de este arte se logra a través de la construcción práctica de soluciones reales. Se recomienda comenzar con una necesidad sencilla, como “agregar una tarjeta de presentación del autor al final de cada artículo”, y luego ir aplicando gradualmente los conocimientos adquiridos. Consulte constantemente fuentes de información relevantes.Manual oficial de plugins de WordPressCon la referencia al código, podrás crear plugins personalizados que sean potentes y de código elegante, liberando así todo el potencial de WordPress.

FAQ Preguntas más frecuentes

¿Qué conocimientos previos se necesitan para desarrollar un plugin de WordPress?

Es necesario contar con conocimientos básicos de programación en PHP, entender HTML y CSS, así como tener un conocimiento preliminar de los conceptos fundamentales de WordPress (como artículos, páginas, bucles y etiquetas de plantillas). No es obligatorio estar familiarizado con la programación orientada a objetos (POO), pero sería de gran ayuda para desarrollar plugins complejos.

¿Es necesario que el archivo principal del plugin tenga un nombre específico?

No existe una exigencia obligatoria, pero para mayor claridad y coherencia, se recomienda generalmente utilizar nombres que describan adecuadamente las funciones del plugin. Por ejemplo…my-gallery-plugin.phpEl único requisito es que la parte superior del archivo debe contener las anotaciones de cabecera del plugin correctas; WordPress utiliza estas anotaciones para identificar el plugin.

¿Cómo puedo asegurarme de que mi plugin no cause conflictos con otros plugins?

La mejor práctica para evitar conflictos es agregar un prefijo único a todas tus funciones, clases, constantes y nombres de opciones. Por ejemplo, no uses…get_data()Para nombres de funciones tan generales, deberíamos utilizar…mcp_get_data()(Asumiendo que la abreviatura de tu plugin es mcp). De la misma manera, los nombres de las opciones deberían ser similares.mcp_settings_array

Una vez que el plugin esté completamente desarrollado, ¿cómo se puede distribuir para que otros lo utilicen?

Comprime la carpeta de tus plugins en un archivo ZIP. Los usuarios pueden cargar e instalar este archivo ZIP directamente desde la página “Plugins” -> “Instalar plugins” -> “Cargar plugins” en el panel de administración de WordPress. Si deseas publicar tus plugins en el directorio oficial de plugins de WordPress, debes seguir unos procedimientos más estrictos.Guía de EnvíoY someterlo a revisión de código.

¿Debo utilizar un enfoque procedimental o orientado a objetos para desarrollar el plugin?

Para plugins simples y de pequeño tamaño, el enfoque procedural (uso de funciones independientes) es más directo y rápido. Para plugins de tamaño mediano o grande con funciones complejas, el enfoque orientado a objetos (uso de clases) permite organizar el código de manera más efectiva, lo que mejora su mantenibilidad y reutilizabilidad. Ambos métodos son ampliamente aceptados en la comunidad de WordPress.