Muchos desarrolladores desean convertir sus conocimientos sobre WordPress en ingresos reales, y desarrollar e publicar plugins independientes es una ruta ideal para ello. No solo permite que tu código beneficie a miles de usuarios, sino que también puede generar ingresos continuos. Sin embargo, crear un plugin que cumpla con los estándares oficiales de WordPress, cuente con funciones completas y sea viable para la venta desde cero requiere conocimientos y experiencia sistemáticos. Este artículo te proporcionará una guía práctica completa que abarca desde la configuración del entorno, el desarrollo del código hasta la publicación final del plugin.
Preparativos y configuración del entorno de desarrollo
Antes de escribir la primera línea de código, es de vital importancia establecer un entorno de desarrollo eficiente y estándar. Esto no solo mejora la eficiencia del desarrollo, sino que también asegura la calidad del código.
Crear un entorno de desarrollo local
La forma más recomendable es establecer un entorno de ejecución para WordPress en tu ordenador local. Puedes utilizar herramientas integradas como XAMPP, MAMP, Local by Flywheel o Laragon, las cuales te permiten instalar rápidamente Apache, MySQL y PHP. Asegúrate de que la versión de PHP que uses sea compatible con los entornos de alojamiento más comunes (generalmente, no inferior a 7.4), y activa el modo de depuración de WordPress; esto te ayudará a detectar errores durante la fase de desarrollo.
Lecturas recomendadas De cero a uno: Guía autoritativa y tutorial práctico para el desarrollo de plugins para WordPress。
En wp-config.php En el archivo, configure las siguientes constantes 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 ); // 不在页面上显示错误 Estructura básica de un plugin de planificación
Crea una carpeta independiente para tu plugin. Suponiendo que nuestro plugin se llame “My First Plugin”, el nombre de la carpeta podría ser: my-first-pluginDentro de la carpeta de plugins, se necesitan al menos los siguientes archivos esenciales:
1. Archivo principal: Generalmente se denomina con el nombre del plugin, por ejemplo… my-first-plugin.phpEsta es la única entrada al plugin, que contiene las notas de cabecera del mismo.
2. Archivos de clase principal: Por ejemplo… class-my-first-plugin.phpSe utiliza para organizar la lógica funcional principal de los plugins.
3. assets Carpeta: Alberga recursos de JavaScript, CSS e imágenes.
4. includes Carpeta: Alberga otros archivos de clases auxiliares o funciones.
5. languages Carpeta: Alberga los archivos de traducción internacional (.po/.mo).
Escribe tu primer plugin.
Ahora, crearemos el esqueleto del plugin para implementar una función básica.
Definir el archivo principal del plugin
El ciclo de vida de un plugin comienza en su archivo principal. En dicho archivo… my-first-plugin.php Al comienzo del código del plugin, es necesario escribir las notas de cabecera del plugin de acuerdo con las especificaciones de WordPress. Esto es esencial para que WordPress reconozca el plugin.
Lecturas recomendadas Desde cero: Guía completa para el desarrollo de plugins para WordPress y compartición de las mejores prácticas。
<?php
/**
* Plugin Name: My First Plugin
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 一个用于演示的入门级 WordPress 插件,用于在文章末尾添加自定义内容。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Implementar una clase de funcionalidad central.
Una buena arquitectura de plugins suele utilizar la programación orientada a objetos (POO). Creamos una clase principal para encapsular todas las funciones, lo que evita conflictos en los nombres de las funciones.
Primero, crea el archivo. class-my-first-plugin.php:
<?php
if ( ! defined( 'ABSPATH' ) ) {
exit; // 防止直接访问
}
class My_First_Plugin {
/**
* 构造方法,初始化钩子
*/
public function __construct() {
// 在文章内容末尾添加自定义文本
add_filter( 'the_content', array( $this, 'append_custom_content' ) );
// 在管理后台添加一个设置菜单
add_action( 'admin_menu', array( $this, 'add_admin_menu' ) );
}
/**
* 在文章内容末尾添加内容
*
* @param string $content 原始文章内容。
* @return string 修改后的文章内容。
*/
public function append_custom_content( $content ) {
if ( is_single() && is_main_query() ) {
$custom_text = get_option( 'mfp_custom_text', '感谢阅读!欢迎关注。' );
$content .= '<div class="my-custom-content"><p>' . esc_html( $custom_text ) . '</p></div>';
}
return $content;
}
/**
* 在 WordPress 后台添加一个设置菜单项
*/
public function add_admin_menu() {
add_options_page(
'My First Plugin 设置', // 页面标题
'我的第一个插件', // 菜单标题
'manage_options', // 权限
'my-first-plugin', // 菜单 slug
array( $this, 'render_settings_page' ) // 回调函数
);
}
/**
* 渲染设置页面的 HTML
*/
public function render_settings_page() {
?>
<div class="wrap">
<h1>Configuración de “My First Plugin”</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
}
} A continuación, en el archivo principal… my-first-plugin.php Después de los comentarios de cabecera, introduce esta clase e instancíala:
// 引入主类文件
require_once plugin_dir_path( __FILE__ ) . 'class-my-first-plugin.php';
// 初始化插件
function run_my_first_plugin() {
new My_First_Plugin();
}
run_my_first_plugin(); Mejoras en las funciones de los plugins y en la seguridad.
Un complemento (plugin) calificado no solo debe cumplir con sus funciones, sino que también debe tener en cuenta aspectos como la seguridad y la configurabilidad.
Añadir opciones de configuración y validación de datos
Para que los usuarios puedan personalizar el texto adicional que se agrega, necesitamos crear opciones de configuración reales. Esto implica el uso de la API de configuración de WordPress.
En My_First_Plugin En el método de construcción de la clase, se añade un gancho para realizar la configuración inicial:
Lecturas recomendadas Guía completa para el desarrollo de plugins para WordPress: Un tutorial práctico desde cero hasta la publicación en línea。
add_action( 'admin_init', array( this, 'register_settings' ) ); Luego, agrega al clase el método para configurar el registro:
public function register_settings() {
// 注册一个设置项 `mfp_custom_text` 到 `mfp_settings_group`
register_setting(
'mfp_settings_group', // 选项组
'mfp_custom_text', // 选项名
array(
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field', // 数据净化,防止 XSS
'default' => '感谢阅读!欢迎关注。',
)
);
// 添加一个设置区域
add_settings_section(
'mfp_main_section',
'主要设置',
null, // 回调函数,可为空
'my-first-plugin' // 页面 slug
);
// 在设置区域中添加字段
add_settings_field(
'mfp_custom_text_field',
'自定义追加文本',
array( $this, 'render_text_field' ), // 渲染字段的回调
'my-first-plugin',
'mfp_main_section'
);
}
public function render_text_field() {
$value = get_option( 'mfp_custom_text' );
echo '<input type="text" name="mfp_custom_text" value="' . esc_attr( $value ) . '" class="regular-text">';
echo '<p class="description">Este texto se mostrará al final de cada artículo.</p>';
} Implementar soporte para internacionalización
Para que tu plugin pueda ser utilizado por usuarios de todo el mundo, la internacionalización (i18n) es esencial. Ya hemos definido los elementos necesarios para la internacionalización en las notas del código del plugin. Text Domain Y Domain PathAhora, es necesario envolver todas las cadenas de texto dirigidas al usuario con una función de traducción.
Por ejemplo, al renderizar la página de configuraciones, cambie las cadenas de texto hardcoded (codificadas de forma fija) por:
<h1><?php esc_html_e( 'My First Plugin 设置', 'my-first-plugin' ); ?></h1> En append_custom_content Cuando se obtiene el texto predeterminado en el método:
$custom_text = get_option( 'mfp_custom_text', __( '感谢阅读!欢迎关注。', 'my-first-plugin' ) ); Finalmente, necesitarás utilizar herramientas como Poedit para analizar las funciones de traducción en el código y generar el contenido correspondiente. .pot Los archivos de plantilla se utilizan para generar contenido en diferentes idiomas, de acuerdo con las especificaciones definidas en dichos archivos. zh_CN.po Y .moColoca el archivo de traducción en el lugar correspondiente. /languages Catálogo.
Pruebas, empaquetamiento y publicación
Antes de enviar los complementos a los usuarios, una prueba exhaustiva y un empaquetamiento profesional son los pasos clave y finales.
Realizar una prueba de funcionalidad completa.
La prueba debe abarcar los siguientes aspectos:
1. 功能测试:确保“追加文本”功能在单篇文章页面正常工作,设置页面能保存和读取值。
2. Pruebas de compatibilidad: Probar el plugin en diferentes versiones de WordPress (especialmente la versión anterior principal), versiones de PHP y varios temas populares.
3. Pruebas de seguridad: Comprobar si todos los datos introducidos por los usuarios (como las opciones de configuración) han sido sometidos a un proceso de verificación adecuado. esc_html、sanitize_text_field Este tipo de procesamiento de purificación o escape asegura que los usuarios no administradores no puedan acceder a las páginas de configuración.
4. 性能检查:确保插件没有在每次页面加载时引入不必要的数据库查询或重型脚本。
Está listo para ser publicado en WordPress.org.
Si decides publicar el plugin de forma gratuita en el directorio oficial de plugins de WordPress, necesitarás:
1. 在 WordPress.org 上申请一个 SVN 仓库。
2. 为你的插件创建一个专业的 readme.txt Este archivo utiliza un formato específico (similar a Markdown) para mostrar descripciones, instrucciones de instalación, capturas de pantalla, registros de actualizaciones, etc. en la página del directorio de plugins. Es una parte esencial de la estrategia de marketing de los mismos.
3. Asegúrate de que el código cumpla con los estándares de codificación de WordPress. Puedes utilizar PHP_CodeSniffer junto con las reglas estándar de WordPress para realizar una revisión automática.
4. Utiliza el cliente SVN para enviar la carpeta de tus plugins (que contiene todos los archivos) al repositorio. /trunk Índice. Etiquete (tag) el código de la versión estable. /tags/1.0.0 Catálogo.
Prepararse para el lanzamiento comercial.
Si planeas realizar ventas comerciales (por ejemplo, a través de tu propio sitio web o de mercados como CodeCanyon):
1. 添加许可证管理:实现一个系统来验证用户的购买凭证,可能通过 API 连接到你的销售平台。
2. 构建升级机制:为插件加入更新检查功能,当你在自己的服务器发布新版本时,能向已安装的用户推送更新通知。这通常通过向 WordPress 的更新系统注入自定义数据来实现。
3. Mejorar los documentos: Redactar documentos de uso claros, preguntas frecuentes (FAQ) y guías de resolución de problemas.
4. 选择支付和分发方案:集成 Stripe、PayPal 等支付网关,或使用 Easy Digital Downloads、WooCommerce 等成熟的电商插件来搭建你自己的销售门户。
resúmenes
El desarrollo de plugins para WordPress es un proceso sistemático que va desde la creación de ideas hasta la implementación y, finalmente, la comercialización del producto. Comienza con una definición clara de las necesidades y un entorno de desarrollo estándar. El aspecto central de este proceso es seguir las normas de codificación de WordPress, utilizar su amplia API de ganchos (Hooks) y mantener un estricto control de la seguridad y la internacionalización del plugin. Organizar el código de manera orientada a objetos proporciona una base sólida para su mantenimiento a largo plazo. Las fases de prueba, empaquetamiento y publicación constituyen el puente que conecta a los desarrolladores con los usuarios de todo el mundo; sea que se opte por compartir el código abierto o por vender el plugin comercialmente, una presentación profesional es de suma importancia. Siguiendo los pasos detallados en esta guía, podrás crear un plugin para WordPress con una estructura clara, seguro, fiable y que cumpla con los estándares de publicación, dando así un paso firme hacia la generación de ingresos a través de la tecnología.
FAQ Preguntas más frecuentes
¿Es obligatorio utilizar la programación orientada a objetos para desarrollar plugins para WordPress?
No es obligatorio, pero se lo recomienda encarecidamente. Utilizar la programación orientada a objetos (POO) y las clases para organizar el código te permite encapsular las funciones de tu plugin en espacios de nombres independientes, lo que reduce significativamente el riesgo de conflictos con los nombres de funciones de temas u otros plugins. Además, hace que la estructura del código sea más clara y facilita su mantenimiento y expansión.
En las notas de la cabecera del plugin, ¿qué significan `Text Domain` y `Domain Path`?
Text DomainEl (campo de texto) es un identificador único que indica a WordPress qué “paquete de archivos de traducción” utiliza tu plugin. Generalmente, coincide con el nombre de la carpeta del plugin o el nombre del archivo principal.Domain Path Esto define la ruta con respecto al directorio raíz del plugin. WordPress buscará en esta ruta el contenido correspondiente al idioma especificado. .mo Por ejemplo, el archivo a traducir podría ser el siguiente:Domain Path: /languages Esto significa que el archivo de traducción se encuentra almacenado en el plugin. /languages Dentro de la carpeta.
¿Cómo puedo asegurarme de que mi plugin no ralentice la velocidad del sitio web del usuario?
Optimizar el rendimiento de los plugins es crucial. Evite ejecutar consultas de base de datos complejas en cada carga de página; en su lugar, utilice el API Transients para almacenar en caché los datos que puedan ser almacenados de forma permanente. En cuanto a los archivos de JavaScript y CSS del lado del cliente, solo carguelos en las páginas que lo necesiten, basándose en condiciones específicas (por ejemplo, si el usuario ha realizado una acción determinada o si se ha alcanzado un punto específico en la navegación). is_admin() o is_single()Se carga utilizando (…) y luego se utiliza. wp_enqueue_script() Y wp_enqueue_style() Las funciones se incluyen con las dependencias y versiones correctas. Se realizan revisiones de código de manera periódica para eliminar operaciones redundantes.
¿Debería publicar el plugin en WordPress.org o venderlo por mi cuenta?
Depende de tus objetivos. Publicar en WordPress.org es gratuito y te permite llegar a una gran cantidad de usuarios, establecer una reputación y generar ingresos a través de donaciones o al dirigir a los usuarios a tus servicios de versión profesional. No obstante, exige que los plugins cumplan con la licencia GPL y existe un proceso de revisión específico. Vender tus plugins de forma independiente (con licencia comercial) te da el control total sobre los precios, las estrategias de marketing y los canales de soporte; además, puedes desarrollar plugins más complejos y funcionalmente avanzados. Sin embargo, tendrás que encargarte personalmente de los pagos, la verificación de licencias, la distribución de actualizaciones y el servicio al cliente.
¿Cómo se pueden gestionar de manera segura los cambios en la estructura de la base de datos cuando los usuarios actualizan los complementos (plugins)?
Este es un problema complejo, pero bastante común. Cuando la nueva versión de tu plugin requiere realizar cambios en la base de datos (por ejemplo, crear nuevas tablas o agregar campos), bajo ninguna circunstancia se debe ejecutar dicha operación en cada carga de página. CREATE TABLE La mejor práctica es almacenar el número de versión de la base de datos como una opción de WordPress (por ejemplo,…) <code>yourplugin_db_version</code>Durante la inicialización del plugin, se verifica si la versión de la base de datos en el código actual coincide con la versión almacenada. Si no hay coincidencia, se llama a una función especial de actualización para realizar los cambios SQL necesarios y, a continuación, se actualiza el número de versión almacenado. Esto garantiza que la operación de actualización se realice solo una vez.
¿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.
- ¿Qué es un tema para WordPress? Una guía completa desde los principios hasta la maestría
- ¿Cómo elegir y personalizar el tema de WordPress perfecto para ti?
- Guía para el desarrollo de plugins para WordPress: Crea tu primer plugin personalizado desde cero
- Convertirse en desarrollador de plugins para WordPress: Una guía completa desde cero
- De cero a uno: Guía completa y consejos prácticos para construir sitios web profesionales con WordPress