Por qué elegir el desarrollo de plugins de WordPress
WordPress, como el sistema de gestión de contenidos más popular del mundo, debe gran parte de su gran capacidad de ampliación a los plugins. Mediante el desarrollo de plugins personalizados, puedes añadir funciones únicas a la plataforma principal para satisfacer necesidades específicas del negocio, sin necesidad de modificar los archivos del tema. Esto garantiza que el código de tus funciones no se pierda al actualizar el tema y, además, hace que las funcionalidades sean modulares, facilitando su reutilización entre distintos sitios web.
Aprender el desarrollo de plugins no solo te permite crear productos que otros puedan usar, sino también comprender más profundamente cómo funciona WordPress, incluido su sistema de hooks, la interacción con la base de datos y las mejores prácticas de seguridad. Este es un paso clave para pasar de usuario común a desarrollador avanzado.
Crea tu primer plugin
Antes de empezar a escribir código, necesitas configurar un entorno estándar de WordPress en tu equipo local o en un servidor de pruebas. Esta es la base de todo el trabajo de desarrollo.
Lecturas recomendadas Aprender a desarrollar plugins de WordPress desde cero: crear tu primera función personalizada.。
Crear el archivo principal del plugin
Cada plugin de WordPress debe tener un archivo principal, que normalmente lleva el nombre del plugin. Vamos a crear uno llamadomy-first-plugindel plugin. Primero, en el directorio de instalación de tu WordPress/wp-content/plugins/Dentro de la carpeta, crea una carpeta nueva llamadamy-first-plugin。
En esta carpeta, crea uno llamadomy-first-plugin.phpdel archivo PHP. Este archivo es el punto de entrada del plugin. Ábrelo y añade el siguiente comentario de cabecera del plugin; esta información es crucial para que WordPress reconozca tu plugin.
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://yourwebsite.com/my-first-plugin
* Description: 这是一个学习WordPress插件开发的示例插件,用于在文章底部添加自定义内容。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
* Domain Path: /languages
*/ Implementar la primera función simple.
Una función clásica para principiantes es añadir automáticamente un texto al final del contenido de todos los artículos del sitio web. Usaremos WordPress para ello. the_content Se implementa mediante un gancho de filtro. Debajo del comentario de cabecera de tu archivo principal, añade la siguiente función:
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
/**
* 在文章内容末尾添加自定义文本
*
* @param string $content 原始的文章内容。
* @return string 修改后的文章内容。
*/
function mfp_add_footer_text( $content ) {
// 判断是否是主循环且在单篇文章页面
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<div class="mfp-footer-note"><p><em>¡Gracias por leer! Este artículo se lo presenta “Mi primer complemento”.</em></p></div>';
return $content . $custom_text;
}
return $content;
}
// 将函数挂载到 `the_content` 过滤器上
add_filter( 'the_content', 'mfp_add_footer_text' ); Este código define una función. mfp_add_footer_textRecibe el contenido del artículo. $content Como parámetro, la función primero verifica si el entorno actual se encuentra en la página de un artículo individual, en el ciclo principal o en la consulta principal. Esto se hace para evitar que el texto se añada también en los resúmenes, las herramientas adicionales u otras partes del sitio. Si se cumplen las condiciones, crea un segmento de texto HTML personalizado y lo añade al final del contenido original.
Profundización en la arquitectura de plugins y la seguridad
A medida que aumentan las funcionalidades de los plugins, una buena organización del código es de vital importancia. Al mismo tiempo, la seguridad es el eje de toda la desarrollo para WordPress.
Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: cree su primer módulo de funcionalidad extendida desde cero.。
Reestructurar el código utilizando programación orientada a objetos.
Para mejorar la mantenibilidad y la escalabilidad del código, se recomienda utilizar un enfoque orientado a objetos (OOP) para organizar los complementos (plugins). Reestructuraremos las funciones mencionadas anteriormente en una clase.
// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
class My_First_Plugin {
/**
* 构造函数,初始化插件钩子。
*/
public function __construct() {
// 在构造方法中将方法挂载到钩子上
add_action( 'init', array( $this, 'load_textdomain' ) );
add_filter( 'the_content', array( $this, 'add_footer_to_content' ) );
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
}
/**
* 加载插件的文本翻译域。
*/
public function load_textdomain() {
load_plugin_textdomain( 'my-first-plugin', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}
/**
* 在文章内容末尾添加自定义文本。
*/
public function add_footer_to_content( $content ) {
if ( is_single() && in_the_loop() && is_main_query() ) {
$custom_text = '<div class="mfp-footer-note"><p><em>' . esc_html__( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ) . '</em></p></div>';
return $content . $custom_text;
}
return $content;
}
/**
* 为插件添加样式。
*/
public function enqueue_styles() {
wp_enqueue_style( 'mfp-style', plugins_url( 'assets/css/style.css', __FILE__ ), array(), '1.0.0' );
}
}
// 实例化插件类
$my_first_plugin_instance = new My_First_Plugin(); Por favor, tenga en cuenta que… add_footer_to_content Utilizado en el método esc_html__() Se trata de una función que sirve para envolver el texto. Es una función de traducción que, al mismo tiempo, realiza la codificación adecuada del resultado para garantizar una salida de texto segura. También hemos añadido un método para cargar las hojas de estilo y hemos incorporado soporte para campos de texto, lo que nos prepara para la internacionalización (i18n) de los plugins.
Comprender e implementar la validación y la escape de datos.
Nunca confíes en la información introducida por los usuarios ni en ningún dato externo. Al recibir, procesar o generar datos, es esencial realizar verificaciones, limpiezas y operaciones de escape (como la inserción de caracteres especiales). Por ejemplo, si vas a crear una página de administración con formularios de entrada, asegúrate de utilizar las funciones proporcionadas por WordPress que no dependen del protocolo HTTP Secure (HTTPS) y que incluyen controles de permisos y validación de datos.
La función de este complemento es relativamente simple, pero ya la hemos utilizado al generar el código HTML. esc_html__() Se deben realizar operaciones de escape. Si un plugin necesita procesar los datos enviados por los usuarios, por ejemplo a través de un formulario, es esencial utilizar los métodos adecuados para garantizar la corrección y la seguridad de dichos datos. sanitize_text_field(), wp_kses_post() limpiar con funciones como estas y utilizar wp_verify_nonce() para verificar la legitimidad de la solicitud.
Crear la página de administración de plugins
Un complemento maduro suele necesitar una página de configuración en el panel de administración. Aprenderemos a usar la API de ajustes de WordPress para crear una página de administración sencilla y estándar.
Añadir menú de configuración del plugin
Primero, necesitamos añadir una página de submenú en el menú “Ajustes” del panel de administración de WordPress. Añade un nuevo método en tu clase y en el constructor, mediante add_action('admin_menu', ...) El gancho lo llama.
Lecturas recomendadas Guía para principiantes en el desarrollo de complementos de WordPress: crea tu primer complemento funcional desde cero.。
/**
* 注册插件管理页面。
*/
public function register_admin_menu() {
add_options_page(
__( '我的插件设置', 'my-first-plugin' ), // 页面标题
__( '我的第一个插件', 'my-first-plugin' ), // 菜单标题
'manage_options', // 所需权限
'mfp-settings', // 菜单slug
array( $this, 'display_settings_page' ) // 显示页面的回调函数
);
} Luego, añada lo siguiente en el constructor:add_action( 'admin_menu', array( $this, 'register_admin_menu' ) );。
Construir la página de configuración y los campos
A continuación, necesitamos definir display_settings_page Método utilizado para renderizar el contenido HTML de la página de configuración y para registrar un campo de configuración mediante la API de configuración.
/**
* 显示插件设置页面。
*/
public function display_settings_page() {
?>
<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( 'mfp_settings_group' );
do_settings_sections( 'mfp-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="es"/></form>
</div>
<?php
}
/**
* 初始化插件设置。
*/
public function initialize_settings() {
// 注册一个设置
register_setting(
'mfp_settings_group', // 设置组名
'mfp_footer_text', // 选项名
array(
'type' => 'string',
'sanitize_callback' => 'sanitize_text_field', // 清理回调函数
'default' => __( '感谢阅读!本文由“我的第一个插件”为您呈现。', 'my-first-plugin' ),
)
);
// 添加一个设置区域
add_settings_section(
'mfp_main_section',
__( '主要设置', 'my-first-plugin' ),
null, // 可选的区域描述回调函数
'mfp-settings'
);
// 向区域中添加字段
add_settings_field(
'mfp_footer_field',
__( '页脚文本', 'my-first-plugin' ),
array( $this, 'render_footer_field' ), // 渲染字段的回调函数
'mfp-settings',
'mfp_main_section',
array( 'label_for' => 'mfp_footer_text' )
);
} Necesitas definir… render_footer_field Un método para renderizar el cuadro de entrada real y actualizar el contenido anterior. add_footer_to_content Método para hacerlo desde las opciones de la base de datos get_option('mfp_footer_text') Leer el texto de ahí, en lugar de usar cadenas codificadas. Por último, añade en el constructor:add_action( 'admin_init', array( $this, 'initialize_settings' ) );。
resúmenes
A través del recorrido de este artículo, has construido desde cero un plugin de WordPress completamente funcional. Has aprendido a crear la estructura básica de un plugin, a utilizar los ganchos de acciones y filtros para ampliar la funcionalidad de WordPress, a organizar el código con un enfoque orientado a objetos para mejorar su calidad, a seguir las mejores prácticas de seguridad para validar y escapar los datos, y a utilizar la API de ajustes de WordPress para crear una interfaz profesional de administración en el panel de control.
El núcleo del desarrollo de plugins reside en comprender el sistema de hooks y el flujo de datos de WordPress. Practica de forma continua, empieza con funciones sencillas, aumenta gradualmente la complejidad y sitúa siempre la seguridad, el rendimiento y la mantenibilidad en primer lugar. A medida que acumules experiencia, podrás desarrollar plugins de WordPress potentes, profesionales y populares.
FAQ Preguntas más frecuentes
¿Qué conocimientos básicos se necesitan para desarrollar plugins para WordPress?
Necesitas tener sólidos conocimientos de programación en PHP, ya que los plugins están escritos principalmente en PHP. Al mismo tiempo, también es necesario tener conocimientos básicos de HTML, CSS y JavaScript, porque necesitarás encargarte de la presentación e interacción en el frontend. Lo más importante es que necesitas estar familiarizado con los conceptos fundamentales de WordPress, como los hooks (acciones y filtros), el loop, la jerarquía de plantillas y las operaciones con la base de datos (mediante clases como WP_Query y WP_User_Query, entre otras).
¿Cómo depuro y pruebo mi plugin?
En primer lugar, se recomienda encarecidamente desarrollar en un entorno local (como Local by Flywheel o XAMPP) o en un sitio de prueba en línea para evitar afectar al sitio web en producción. Activa el modo de depuración de WordPress en tu entorno de desarrollo.wp-config.phpAjustes configurados en el archivo.define( 'WP_DEBUG', true );Esto mostrará los errores y advertencias de PHP en la pantalla.error_log()La función registra información de depuración personalizada en el registro de errores del servidor. Para un depurado más avanzado, se pueden considerar plugins profesionales de depuración como Query Monitor o Debug Bar.
¿Cómo puedo asegurarme de que mi plugin sea compatible con diferentes versiones de WordPress?
Durante el desarrollo, es importante prestar atención a las notificaciones sobre la descontinuación de funciones contenidas en los documentos oficiales de WordPress. Evite utilizar funciones que hayan sido marcadas como “descontinuadas”. En el archivo principal del plugin, se puede hacer esto de la siguiente manera:Requires at leastYTested up toLa información de cabecera se utiliza para indicar las versiones de WordPress con las que tu plugin es compatible. Prueba tu plugin periódicamente en versiones más recientes de WordPress y sigue el registro de actualizaciones del código fuente (core updates) para poder ajustar tu código en tiempo real.
¿Cómo publico mi plugin en el directorio oficial de plugins de WordPress?
En primer lugar, debes asegurarte de que tu plugin cumpla completamente con las especificaciones oficiales de desarrollo de plugins y las guías de envío. Esto incluye la calidad del código, la seguridad, el acuerdo de licencia (debe ser GPLv2 o una versión más reciente), entre otros aspectos. Luego, solicita un repositorio SVN en WordPress.org y envía el código de tu plugin a dicho repositorio.trunkEn el directorio, se creará lo correspondiente.readme.txtArchivo (utilizando un formato específico). Una vez aprobada la revisión, tu complemento aparecerá en el directorio oficial.
¿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.
- 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
- Desde cero: El proceso completo y las mejores prácticas para el desarrollo de temas para WordPress moderno
- Guía completa para el desarrollo de plugins para WordPress: Desde los principios hasta la maestría para crear extensiones profesionales
- De cero a uno: Dominar completamente las técnicas centrales y los procesos prácticos del desarrollo de temas para WordPress