¿Por qué elegir desarrollar un plugin para WordPress?
WordPress, como el sistema de gestión de contenidos más popular a nivel mundial, debe su gran capacidad de expansión en gran medida a su arquitectura de plugins. Desarrollar tus propios plugins significa que ya no estás limitado por las funcionalidades de los plugins existentes y puedes satisfacer de manera precisa las necesidades específicas de tu sitio web o de tus clientes. Ya sea que se trate de agregar un simple código corto o de crear un complejo panel de administración, los plugins te permiten separar la lógica de tus funciones del tema utilizado, asegurando que estas no se vean afectadas cuando se actualice el tema.
Desde el punto de vista del aprendizaje, comprender el desarrollo de plugins es un paso esencial para profundizar en el funcionamiento de WordPress. Te permite familiarizarte con dos conceptos fundamentales: los Action Hooks y los Filter Hooks, que son la base de la modularidad y la extensibilidad de WordPress. Dominar el desarrollo de plugins no solo mejorará tus habilidades técnicas, sino que también te abrirá nuevas oportunidades profesionales e incluso te permitirá crear productos digitales que puedas vender.
Preparativos previos al desarrollo
Antes de escribir la primera línea de código, necesitas un entorno de desarrollo adecuado. Esto generalmente incluye un servidor local (como Local by Flywheel, XAMPP o MAMP), un editor de código (como VS Code o PhpStorm), así como un sitio de prueba con WordPress instalado. Asegúrate de que tu entorno de prueba utilice la misma versión de PHP que el entorno de producción en línea para evitar problemas de compatibilidad.
Lecturas recomendadas Dominar las técnicas fundamentales de WordPress: Una guía práctica completa desde la instalación hasta la optimización。
Comprender la estructura básica de un complemento.
Un plugin básico de WordPress puede contener únicamente un archivo PHP. No obstante, un plugin bien estructurado suele incluir varios directorios y archivos para lograr una mejor organización. Un directorio de plugin típico puede tener la siguiente estructura:
El archivo del complemento principal (por ejemplo, my-first-plugin.phpEste es el punto de entrada del plugin, que contiene la información del encabezado del mismo.
- includes/ Directorio: Alberga los archivos que contienen las clases o funciones de funcionalidades esenciales.
- admin/ Directorio: Alberga el código relacionado con la interfaz de administración en segundo plano.
- public/ Directorio: Alberga el código destinado a la parte frontal ( frontend) del sitio web.
- assets/ Directorio: Almacena recursos estáticos como JavaScript, CSS e imágenes.
- languages/ Directorio: Alberga los archivos de traducción internacional (.po/.mo).
Información esencial sobre los cabezales de los plugins necesarios
Cada plugin de WordPress debe incluir en la parte superior de su archivo PHP principal las anotaciones de cabecera estándar para plugins; esto es esencial para que WordPress pueda reconocer el plugin. A continuación, se muestra un ejemplo básico:
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于学习插件开发的简单示例插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/
Entre ellos,Plugin Name Estos campos son obligatorios; el resto son optativos. No obstante, para garantizar la integridad y la facilidad de mantenimiento del plugin, se recomienda completar toda la información relevante.Text Domain Utilizado para la internacionalización.Domain Path Señala al directorio de los archivos de idioma.
Construye tu primer plugin: una función sencilla de saludo.
Vamos a poner en práctica esto con un ejemplo concreto. Crearemos un plugin que muestre un saludo personalizable en la parte superior del contenido de los artículos de un sitio web.
Crear archivos y directorios para los plugins.
Primero, en el directorio de instalación de WordPress: wp-content/plugins/ En la carpeta, cree una nueva carpeta y nómenela… my-greeting-pluginLuego, dentro de esa carpeta, cree un archivo PHP principal con el nombre de my-greeting-plugin.phpY copie la información de la cabecera del plugin mencionada anteriormente allí.
Lecturas recomendadas Cómo seleccionar y desarrollar complementos de WordPress de alta calidad: de principiante a experto.。
Usar ganchos para agregar funciones.
WordPress funciona a través de un sistema de ganchos (hooks). Para agregar información antes del contenido de los artículos, debemos utilizar estos ganchos. the_content Ganchos de filtro: En tu archivo principal del plugin, añade las siguientes funciones y llamadas a los ganchos.
/**
* 在文章内容前添加问候语
*
* @param string $content 原始的文章内容。
* @return string 修改后的文章内容。
*/
function mgp_add_greeting_to_content( $content ) {
$greeting_text = get_option( 'mgp_greeting_text', '欢迎阅读!' ); // 从数据库获取设置,默认为“欢迎阅读!”
$custom_greeting = '<div class="mgp-greeting"><p><strong>'`. esc_html($greeting_text)`.'</strong></p></div>';
// 仅对主循环中的单篇文章页面生效
if ( is_single() && in_the_loop() && is_main_query() ) {
return $custom_greeting . $content;
}
return $content;
}
// 将函数挂载到 `the_content` 过滤器
add_filter( 'the_content', 'mgp_add_greeting_to_content' );
Este código define una función. mgp_add_greeting_to_contentRecibe el contenido del artículo y agrega un contenedor DIV con un saludo al principio de este. add_filter() Funciones: Vamos a cargar nuestras funciones personalizadas en WordPress. the_content El saludo solo se muestra en el ciclo principal de la página de un artículo individual en la interfaz de usuario. Los criterios lógicos establecidos dentro de la función garantizan que no afecte las páginas de archivo ni los widgets.
Crear una página de configuración de administración sencilla
Para que los usuarios puedan personalizar el texto de los saludos, necesitamos agregar una página de configuración sencilla. Esto implica el uso de la API del menú de administración de WordPress. Continúe agregando el siguiente código en el archivo principal del plugin:
/**
* 注册插件设置菜单和页面
*/
function mgp_register_admin_menu() {
add_options_page(
'问候语设置', // 页面标题
'问候语插件设置', // 菜单标题
'manage_options', // 所需权限
'my-greeting-plugin', // 菜单slug
'mgp_render_settings_page' // 用于输出页面内容的回调函数
);
}
add_action( 'admin_menu', 'mgp_register_admin_menu' );
/**
* 渲染设置页面的内容
*/
function mgp_render_settings_page() {
?>
<div class="wrap">
<h1>Configuración del plugin para saludos</h1>
<form method="post" action="/es/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'mgp_settings_group' ); // 输出设置组和非ce字段
do_settings_sections( 'my-greeting-plugin' ); // 输出设置区域
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="es"/></form>
</div>
<?php
}
/**
* 初始化插件设置
*/
function mgp_initialize_settings() {
// 注册一个设置
register_setting(
'mgp_settings_group', // 设置组名
'mgp_greeting_text', // 选项名,对应数据库中的键
array( // 可选的验证回调函数
'sanitize_callback' => 'sanitize_text_field',
'default' => '欢迎阅读!'
)
);
// 添加一个设置区域
add_settings_section(
'mgp_main_section', // 区域ID
'主要设置', // 区域标题
null, // 区域介绍的回调函数(此处不需要)
'my-greeting-plugin' // 页面slug
);
// 向区域中添加一个字段
add_settings_field(
'mgp_greeting_field', // 字段ID
'问候语文本', // 字段标签
'mgp_greeting_field_callback', // 用于输出字段HTML的回调函数
'my-greeting-plugin', // 页面slug
'mgp_main_section' // 区域ID
);
}
add_action( 'admin_init', 'mgp_initialize_settings' );
/**
* 渲染问候语文本输入字段
*/
function mgp_greeting_field_callback() {
$greeting = get_option( 'mgp_greeting_text', '欢迎阅读!' );
echo '<input type="text" name="mgp_greeting_text" value="' . esc_attr( $greeting ) . '" class="regular-text" />';
echo '<p class="description">Este texto se mostrará en la parte superior de cada artículo de su sitio web.</p>';
}
Este código realiza las siguientes tareas:
1. Usar add_action( 'admin_menu', ... ) Se ha añadido una página de menú secundario dentro del menú “Ajustes”.
2. Uso add_action( 'admin_init', ... ) Configuraciones iniciales, que incluyen la opción de registrar una base de datos, una zona de configuración y un campo de entrada.
3. Se han definido las funciones para generar la página de configuración de rendimiento, así como los formularios y campos correspondientes.
Ahora, inicia sesión en el panel de administración de tu WordPress y, en el menú “Ajustes”, encontrarás la opción “Configuración del plugin de saludos”. Allí podrás modificar el texto del saludo y ver los cambios inmediatamente en los artículos publicados en la página principal.
Las mejores prácticas y avances en el desarrollo de plugins
Después de completar las funciones básicas, seguir las mejores prácticas hará que tu plugin sea más profesional, seguro y fácil de mantener.
La seguridad es la prioridad principal.
Nunca confíes en la información proporcionada por los usuarios. En los plugins, todos los datos obtenidos desde fuentes externas deben ser verificados y procesados de manera segura. $_GET、$_POST、$_COOKIE Cualquier dato proveniente de una consulta a una base de datos debe ser verificado, limpiado o escapado antes de ser exhibido o utilizado.
Salida de escape: utilizar esc_html()、esc_attr()、esc_url() Y wp_kses_post() y otras funciones.
Limpiar la entrada: usar sanitize_text_field()、sanitize_email()、intval() y otras funciones.
Seguridad de la base de datos: utilizar $wpdb Se pueden realizar consultas utilizando los métodos de una clase, o también se puede hacer uso de otros medios apropiados. prepare() Se utilizan métodos para realizar consultas parametrizadas con el fin de prevenir inyecciones SQL.
Comprobación de permisos: antes de acceder a la página de administración o de realizar operaciones sensibles, utilice current_user_can() Verifique los permisos del usuario y utilícelos según corresponda. check_admin_referer() Verificar el campo `nonce` para prevenir la falsificación de solicitudes entre sitios (Cross-Site Request Forgery, CSRF).
Lecturas recomendadas Dominar las técnicas fundamentales de WordPress para crear sitios web profesionales que combinen funcionalidad y belleza estética.。
Implementar la internacionalización (i18n)
Para que tu plugin pueda ser utilizado por usuarios de todo el mundo, es necesario que soporte la traducción a múltiples idiomas. Esto implica que debes utilizar las funciones de traducción de WordPress para encapsular todas las cadenas de texto dirigidas al usuario. Modifica la salida de las cadenas de texto en el código existente.
// 在插件头信息中已定义 Text Domain: my-first-plugin
$greeting_text = get_option( 'mgp_greeting_text', __( '欢迎阅读!', 'my-first-plugin' ) );
// 在管理菜单函数中
add_options_page(
__( '问候语设置', 'my-first-plugin' ),
__( '问候语插件设置', 'my-first-plugin' ),
'manage_options',
'my-greeting-plugin',
'mgp_render_settings_page'
);
Luego, puedes utilizar herramientas como Poedit para extraer las cadenas de texto del código fuente del plugin y generar lo que necesitas. .pot Los archivos de plantilla, a partir de los cuales los traductores pueden crear versiones en diferentes idiomas. .po Y .mo El archivo se ha añadido al complemento (plugin). /languages Catálogo.
Organización del código y optimización del rendimiento
A medida que las funciones de los plugins aumentan, es una buena práctica dividir el código en archivos distintos. Utilizar la programación orientada a objetos (POO) y las clases para organizar el código mejora su legibilidad y reutilizabilidad. En cuanto a los recursos (CSS, JS), es recomendable… wp_enqueue_style() Y wp_enqueue_script() La función se ejecuta en el hook correcto (es decir, en el momento adecuado del proceso). wp_enqueue_scripts o admin_enqueue_scriptsSe carga según sea necesario y se especifican las versiones de los componentes dependientes. Se debe evitar realizar consultas a bases de datos costosas directamente dentro de los plugins; en su lugar, se puede considerar utilizar la API Transients para almacenar en caché datos no esenciales.
resúmenes
Comenzando por crear un archivo PHP sencillo y agregar la información de cabecera de los plugins estándar, pasando por la integración de ganchos de acción y ganchos de filtro en el ciclo de vida de WordPress, hasta la construcción de interfaces de administración y el seguimiento de las mejores prácticas de seguridad e internacionalización, has seguido el camino básico para desarrollar un plugin completo para WordPress. Aunque este “plugin de saludo” es simple, demuestra de manera completa el proceso central del desarrollo de plugins: la planificación de las funciones, la conexión de los ganchos necesarios, el manejo de los datos y la creación de las interfaces de usuario. Recuerda que el aprendizaje continuo a través de los manuales oficiales, el estudio del código de plugins open source de calidad y la práctica constante son las mejores formas de mejorar tus habilidades en el desarrollo de plugins. Tu próximo plugin podría resolver un problema real más complejo e interesante.
FAQ Preguntas más frecuentes
¿Cuántos archivos necesita tener como mínimo un plugin para WordPress?
Un plugin de WordPress completo solo necesita, como mínimo, un archivo PHP. Basta con que en la parte superior de este archivo se incluyan las informaciones de cabecera del plugin correctas (al menos…) Plugin NameEn ese caso, WordPress podrá reconocer y activar el plugin en la lista de plugins del backend. Este archivo puede contener todo el código funcional, así como el código de las páginas de administración, entre otros. Por supuesto, para los plugins más complejos, es una práctica recomendable dividir el código en varios archivos y directorios a fin de facilitar su mantenimiento.
¿Cómo puedo evitar que el plugin que he desarrollado entre en conflicto con otros plugins?
La clave para evitar conflictos es utilizar prefijos únicos para nombrar todas tus funciones, clases, variables, nombres de opciones y ganchos de acciones/filtros. Por ejemplo, no uses… add_greeting() Un nombre de función tan genérico debería ser reemplazado por uno más específico y claro, similar a… mgp_add_greeting() Nombres como estos (donde…) mgp (Se trata de la abreviatura de tu plugin). Para las opciones almacenadas en la base de datos, también se debe utilizar un prefijo único, por ejemplo: mgp_greeting_textEsto puede reducir al máximo la posibilidad de conflictos de nombres de espacio.
¿Qué se debe hacer al activar y desactivar un complemento (plugin)?
Cuando se activa un plugin, generalmente es necesario realizar algunas tareas una sola vez, como verificar la versión de PHP o WordPress, crear tablas en la base de datos, inicializar las opciones predeterminadas, etc. Esto se puede hacer mediante… register_activation_hook() Se puede implementar mediante una función. De la misma manera…register_deactivation_hook() Se utiliza para definir las acciones que se ejecutan cuando un complemento se desactiva, como por ejemplo borrar tareas programadas. Sin embargo, tenga en cuenta que los ganchos de desactivación generalmente no se utilizan para eliminar datos; la limpieza de datos suele ser responsabilidad de los ganchos de desinstalación o de la elección manual del usuario.
¿Cómo puedo agregar una página de configuración a mi plugin?
Para agregar una página de configuración a un plugin, se utilizan principalmente dos API de WordPress: el API de menús y el API de configuraciones. En primer lugar, se debe… add_action( 'admin_menu', ... ) Montar una función y utilizarla dentro de esa misma función. add_menu_page() o add_submenu_page() Regístrese para crear una página de menú de nivel superior o inferior. Luego, utilícela. add_action( 'admin_init', ... ) Montar otra función y utilizarla dentro de ella. register_setting()、add_settings_section() Y add_settings_field() Definamos las opciones de configuración específicas y los campos del formulario. Finalmente, escribamos una función de callback para renderizar el formulario HTML de la página de configuración.
¿Con qué versión de WordPress debe ser compatible mi plugin?
Depende de tu grupo de usuarios objetivo. Generalmente, se recomienda ser compatible con las 3 o 4 versiones principales de WordPress más recientes. Puedes utilizar esta información en el encabezado del plugin. Requires at least: Se deben especificar las versiones mínimas de WordPress requeridas. Durante el proceso de desarrollo, se debe evitar utilizar funciones muy nuevas que solo estén disponibles en las versiones más recientes de WordPress, así como otras funciones que no sean compatibles con versiones anteriores. function_exists() Realizar comprobaciones de condiciónes para ofrecer alternativas compatibles con versiones anteriores es una buena práctica. Además, probar regularmente en versiones más antiguas de WordPress es una forma efectiva de garantizar la compatibilidad.
¿Qué sigue, qué sigue?
Lectura ampliada y conocimientos prácticos
Los siguientes están relacionados con el tema de este artículo y son adecuados para una lectura más profunda. A menudo es mejor priorizar empezando por el artículo que más se acerque a su problema actual y ampliando gradualmente a los temas circundantes.
- ¿Cómo elegir y personalizar el tema de WordPress perfecto para ti?
- De cero a uno: Guía completa y consejos prácticos para construir sitios web profesionales con WordPress
- Guía completa para mejorar la seguridad de WordPress
- Profundice en las mejores prácticas de seguridad de WordPress: protege completamente tu sitio web.
- Guía completa para el desarrollo de plugins para WordPress: Desde los principios hasta la maestría para crear extensiones profesionales