Comprender la estructura básica de los plugins de WordPress.
Antes de comenzar a escribir código, es fundamental comprender la estructura básica de un plugin de WordPress. Un plugin es, básicamente, uno o varios archivos PHP que se encuentran en/wp-content/plugins/Bajo el directorio, se extienden las funciones básicas mediante la API (Interfaz de programación de aplicaciones) proporcionada por WordPress. El núcleo del complemento es un archivo principal, que debe incluir comentarios de encabezado específicos para que WordPress pueda reconocerlo y administrarlo.
Composición del archivo principal del plugin
El punto de entrada del complemento suele ser un archivo PHP que lleva el mismo nombre que el complemento. La cabecera de este archivo debe incluir un comentario estandarizado que proporcione información meta a WordPress. Este comentario debe incluir, como mínimo, el nombre del complemento, la descripción, la versión, el autor y la licencia. Por ejemplo, para un complemento llamado “My Custom Widget”, su archivo principal sería el siguiente:my-custom-widget.phpEl comienzo podría ser algo así:
<?php
/**
* Plugin Name: My Custom Widget
* Plugin URI: https://www.example.com/my-custom-widget
* Description: 这是一个用于演示的自定义小工具插件。
* Version: 1.0.0
* Author: Your Name
* Author URI: https://www.example.com
* License: GPL v2 or later
* Text Domain: my-custom-widget
*/ En esta anotación, el “Nombre del plugin” es el único campo obligatorio que WordPress utiliza para identificar el plugin. Aunque los demás campos son opcionales, se recomienda rellenarlos por completo para garantizar la normalización y la capacidad de mantenimiento del plugin. El campo “Dominio de texto” se utiliza para la internacionalización y es clave para agregar soporte multilingüe al plugin en el futuro.
Lecturas recomendadas Guía para el desarrollo de plugins para WordPress: Cómo crear módulos de funcionalidades personalizadas desde cero。
Las mejores prácticas para la estructura del catálogo de complementos.
Para los complementos sencillos, un solo archivo PHP puede ser suficiente. Sin embargo, para los complementos más complejos, es imprescindible contar con una estructura de directorios clara y modular. Un directorio típico de complementos profesionales puede incluir las siguientes secciones:
- El archivo principal (
plugin-name.php) : El archivo de inicio del complemento, que contiene los comentarios del encabezado del archivo y la lógica central o el cargador. includes/osrc/: Un directorio, utilizado para almacenar los archivos de las clases principales de PHP y los módulos de funcionalidad.admin/: Un directorio, que almacena exclusivamente el código y las páginas relacionadas con la interfaz de administración de back-end.public/ofrontend/: El directorio, donde se almacena la lógica que procesa la visualización del sitio web en el front-end.assets/: Un directorio que contiene recursos estáticos como JavaScript, CSS e imágenes.languages/: Catálogo, donde se almacenan los archivos de traducción internacionales (archivos .po/.mo).uninstall.phpUn archivo opcional, pero recomendado, que se utiliza para limpiar la base de datos y otros datos cuando el usuario elimina el complemento.
Este método de organización estructurado no solo hace que el código sea fácil de mantener y de colaborar en equipo, sino que también cumple con las mejores prácticas de desarrollo de PHP moderno.
Dominar las herramientas básicas de desarrollo: acciones y filtros de hook.
La filosofía central del desarrollo de plugins de WordPress es el “gancho”. El mecanismo de ganchos permite que tu plugin se “integre” en el proceso central de WordPress en un momento determinado, con el fin de modificar o agregar funcionalidades sin necesidad de modificar directamente el código central. Los ganchos se dividen principalmente en dos tipos: ganchos de acción y ganchos de filtro.
Uso de los ganchos de acción (Action Hooks)
Los ganchos de acción ejecutan tu código personalizado cuando ocurren eventos específicos. Por ejemplo, cuando se publica un artículo o cuando se inicializa el menú del área de administración. Utilizaadd_action()Los funciones pueden “montar” tus funciones en un gancho de acción.
Supongamos que desea agregar automáticamente una declaración de derechos de autor al final de cada artículo. Puede utilizarthe_contentEste filtro (tenga en cuenta que, en realidad, es un filtro, pero su funcionamiento es similar al de una acción), pero un ejemplo de acción más típico es registrar un registro cuando el usuario inicia sesión. A continuación, se muestra un ejemplo de uso de los ganchos de acción.wp_footerEjemplo de mostrar información en el pie de página de un sitio web:
Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: construya funciones personalizadas desde cero hasta su finalización.。
function myplugin_add_footer_text() {
echo '<p style="text-align:center;">¡Gracias por usar este sitio!</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' ); Cuando WordPress llega a…wp_footerEste es el momento clave de la acción (generalmente al final del tema).footer.phpLlamada desde Chinawp_footer()Si llamamos a la función `main`, se activarán todas las funciones montadas en ella, incluida la que acabamos de definir.myplugin_add_footer_text。
Uso de los ganchos de filtro (filter hooks)
Los filtros Hooks se utilizan para modificar los datos. Reciben una variable, que, después de ser procesada por tu función, debe devolver la variable modificada. Esta es una de las formas más poderosas de cambiar el comportamiento predeterminado de WordPress. Utilizaadd_filter()El funcionamiento de la función se monta.
Por ejemplo, para modificar la longitud del resumen del artículo, se puede usarexcerpt_lengthFiltro:
function myplugin_custom_excerpt_length( $length ) {
// 将默认的55个单词改为20个单词
return 20;
}
add_filter( 'excerpt_length', 'myplugin_custom_excerpt_length' ); Otro caso de uso común es modificar la salida del contenido del artículo. El código siguiente agrega un cuadro de información antes de todo el contenido del artículo:
function myplugin_add_content_notice( $content ) {
if ( is_single() ) {
$notice = '<div class="notice">Este artículo es de contenido original; por favor, indique la fuente al reproducirlo.</div>';
$content = $notice . $content.
}
return $content.
}
add_filter( 'the_content', 'myplugin_add_content_notice' ); Comprender y usar de manera experta los distintos ganchos es clave para ser un desarrollador eficiente de WordPress. El manual oficial de plugins de WordPress proporciona una lista completa de todos los ganchos disponibles.
Construir una interfaz de administración para el backend de un plugin
La mayoría de los complementos requieren una página de configuración que permita a los administradores del sitio web establecer opciones. WordPress ofrece una API completa para crear páginas de administración atractivas y estandarizadas.
Lecturas recomendadas Aprenda a desarrollar complementos de WordPress: cree su primer módulo de funcionalidad extendida desde cero.。
Crear un menú y una página de administración de nivel superior.
utilizaradd_menu_page()La función puede agregar una entrada de menú principal y su página de configuración correspondiente a la barra lateral de fondo de tu complemento. Esta función requiere que definas parámetros como el título de la página, el título del menú, los permisos, el alias del menú y la función de devolución de llamada, entre otros.
El siguiente ejemplo de código crea una página de menú de nivel superior llamada “Mi configuración de complementos”:
funcion myplugin_add_admin_menu() {
add_menu_page(
'Configuración de mi plugin', // Título de la página
'Mi plugin', // Título del menú
'manage_options', // Permisos (generalmente manage_options, visible solo para administradores)
'myplugin-settings', // Alias del menú (slug), utilizado en la URL
'myplugin_settings_page_html', // Función de devolución de llamada para renderizar el contenido de la página
'dashicons-admin-generic', // Ícono del menú (utilizando Dashicons)
80 // Posición del menú
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
// Definición de la función de devolución de llamada para renderizar el contenido de la página
function myplugin_settings_page_html() {
// Comprobación de los permisos del usuario
if ( ! current_user_can( 'manage_options' ) ) {
return;
}
?>
<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
// 输出设置字段、非ces等(需要与settings API配合使用)
settings_fields( 'myplugin_options' );
do_settings_sections( 'myplugin-settings' );
submit_button( '保存设置' );
?>
<input type="hidden" name="trp-form-language" value="es"/></form>
</div>
¿php?
} Utilice la API de configuración para manejar las opciones de forma segura.
El uso directo de formularios para enviar datos conlleva riesgos de seguridad. La API de Configuración de WordPress ofrece un conjunto de métodos seguros y estandarizados para registrar, validar y guardar opciones de configuración. Se encarga automáticamente de la validación de nonce, la comprobación de permisos y la limpieza de datos.
El uso de la API de Configuración generalmente implica tres pasos:
1. Configuraciones de registro: Usarregister_setting()Defina un conjunto de opciones y sus devoluciones de validación.
2. Agregar un bloque de configuración: usaradd_settings_section()Añade un bloque a la página.
3. Agregar campos de configuración: utilizaradd_settings_field()Agregue campos de entrada específicos dentro del bloque.
A continuación, se muestra un ejemplo simplificado que muestra cómo registrar un campo de opciones de texto:
function myplugin_settings_init() {
// 1. 注册一个设置选项组
register_setting( 'myplugin_options', 'myplugin_options_field', array(
'sanitize_callback' => 'myplugin_sanitize_text_field' // 清理函数
) );
// 2. 添加一个设置区块
add_settings_section(
'myplugin_section_main',
'主要设置',
null, // 可选的区块描述回调函数
'myplugin-settings'
);
// 3. 为区块添加一个字段
add_settings_field(
'myplugin_field_text',
'示例文本',
'myplugin_field_text_html', // 渲染字段HTML的回调函数
'myplugin-settings',
'myplugin_section_main',
array( 'label_for' => 'myplugin_field_text' )
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
// 字段渲染函数
function myplugin_field_text_html() {
$options = get_option( 'myplugin_options_field' );
$value = isset( $options['text'] ) ? $options['text'] : '';
?>
<input type="text" id="myplugin_field_text" name="myplugin_options_field[text]" value="<?php echo esc_attr( $value ); ?>" class="regular-text">
<?php
}
// 数据清理函数
function myplugin_sanitize_text_field( $input ) {
$sanitized_input = array();
if ( isset( $input['text'] ) ) {
$sanitized_input['text'] = sanitize_text_field( $input['text'] );
}
return $sanitized_input;
} Implementar la funcionalidad front-end del plugin y los códigos cortos.
Los complementos no se limitan solo al backend, sino que también son fundamentales para proporcionar funcionalidad al frontend del sitio web. Además de modificar el contenido mediante ganchos, como se mencionó anteriormente, los códigos cortos son una herramienta poderosa para ofrecer funcionalidad dinámica a los editores de contenido y los archivos de plantillas.
Crear y usar códigos cortos.
Los códigos cortos permiten a los usuarios acceder a través de una etiqueta simple (por ejemplo, <).[my_gallery]) Incorporar funciones complejas en un artículo o página. Utilizaradd_shortcode()Función para registrar un código corto.
El siguiente código crea un código corto simple que se usa para mostrar un botón con un saludo personalizado:
function myplugin_hello_shortcode( $atts, $content = null ) {
// 解析短代码属性,并提供默认值
$attributes = shortcode_atts(
array(
'name' => '访客',
'color' => 'blue',
),
$atts,
'hello' // 短代码标签
);
// 确保颜色值安全
$color = esc_attr( $attributes['color'] );
$name = esc_html( $attributes['name'] );
// 构建输出
$output = '<button style="background-color: ' . $color . '; padding: 10px; color: white; border: none;">';
$output .= '你好,' . $name . '!';
$output .= '</button>';
// 如果短代码是封闭式的(有内容),则包含内容
if ( ! is_null( $content ) ) {
$output .= '<div>' . do_shortcode( $content ) . '</div>'funciona perfectamente. Gracias por tu ayuda.; Los usuarios pueden usarlo de la siguiente manera en el editor de artículos:
* [hello name="张三" color="red"]
* [hello]点击我![/hello]
Agregar gadgets personalizados al complemento
Un widget es un bloque de contenido que se ubica en áreas como la barra lateral o el pie de página de WordPress. Para crear una clase de widget personalizada, es necesario hacer una extensión.WP_WidgetLa clase base y la implementación de varios métodos clave: el método de construcción, el método de salida frontal y el método de actualización de formularios.
Crea una pequeña herramienta sencilla que muestre los títulos de los artículos más recientes:
La clase Myplugin_Recent_Posts_Widget extiende WP_Widget.
// Constructor: Define el ID del widget, el nombre y la descripción
public function __construct() {
parent::__construct(
'myplugin_recent_posts',
'Mi plugin: Artículos recientes',
array( 'description' => 'Muestra una lista de los artículos más recientes de tu sitio web.' )
);
}
// Lógica de visualización front-end
public function widget( $args, $instance ) {
echo $args['before_widget'];
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
}
$posts = get_posts( array( 'numberposts' => $instance['number'] ?: 5 ) );
echo '<ul>';
foreach ( $posts as $post ) {
setup_postdata( $post );
echo '<li><a href="/es/' . get_permalink( $post->ID ) . '/">' . get_the_title( $post->ID ) . '</a></li>';
}
wp_reset_postdata();
echo '</ul>'echo $args['after_widget'];
}
// Formulario de gadgets de fondo
public function form( $instance ) {
$title = ! empty( $instance['title'] ) ? $instance['title'] : 'Artículos recientes';
$number = ! empty( $instance['number'] ) ? $instance['number'] : 5;
?>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>">Título:</label>
<input class="widefat" id="<?php echo esc_attr( $this->get_field_id( 'title' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'title' ) ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>">
</p>
<p>
<label for="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>">Número de artículos mostrados:</label>
<input id="<?php echo esc_attr( $this->get_field_id( 'number' ) ); ?>" name="<?php echo esc_attr( $this->get_field_name( 'number' ) ); ?>" type="number" min="1" value="<?php echo esc_attr( $number ); ?>">
</p>
¿Podría alguien explicarme el código PHP en detalle?
<?php
}
// Actualizar la configuración del widget
public function update( $new_instance, $old_instance ) {
$instance = array();
$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? sanitize_text_field( $new_instance['title'] ) : '';
$instance['number'] = ( ! empty( $new_instance['number'] ) ) ? absint( $new_instance['number'] ) : 5;
return $instance;
}
}
// Registrar este widget
function myplugin_register_widget() {
register_widget( 'Myplugin_Recent_Posts_Widget' );
}
add_action( 'widgets_init', 'myplugin_register_widget' ); resúmenes
El desarrollo de plugins de WordPress es un proceso que combina la programación en PHP con un profundo conocimiento de la arquitectura central de WordPress. El primer paso para el éxito consiste en establecer una estructura de archivos y encabezados principales que cumplan con las normas. A continuación, dominar los hooks de acción y filtro es clave para aprovechar la potente capacidad de extensión de WordPress, que permite que tu código intervenga o modifique el flujo de datos en el momento preciso. Para ofrecer una experiencia de configuración amigable para el usuario, es esencial utilizar las API de Admin Menu y Settings de WordPress para crear una interfaz de administración segura y estandarizada. Por último, mediante la implementación de códigos cortos y widgets personalizados, puedes integrar sin problemas las funciones del plugin en el contenido y el diseño del sitio web, ofreciendo a los usuarios formas flexibles de mostrar el contenido. Siguiendo estas técnicas básicas, podrás crear sistemáticamente plugins de WordPress potentes, bien estructurados y fáciles de mantener.
FAQ Preguntas más frecuentes
¿Qué requisitos previos se necesitan para desarrollar un plugin para WordPress?
Necesitas tener una sólida base en programación PHP y un conocimiento básico de HTML, CSS y JavaScript. Familiarizarte con los conceptos de programación orientada a objetos (POO) será de gran ayuda para desarrollar complementos de gran tamaño. Además, un entorno de desarrollo local (como Local by Flywheel, XAMPP, MAMP) y un IDE para la edición de código (como VS Code, PhpStorm) son herramientas necesarias.
¿Cómo puedo asegurarme de que el complemento que desarrollé sea seguro y de alto rendimiento?
En cuanto a la seguridad: siempre verifique y limpie la entrada del usuario, utilizando funciones integradas de WordPress como, por ejemplo,sanitize_text_field(), esc_html(), wp_kses()etc. Al procesar formularios y solicitudes de Ajax, es fundamental utilizar la validación de nonce. Utilice las clases de operaciones de base de datos predefinidas de WordPress (por ejemplo,$wpdbPara evitar la inyección de SQL. En cuanto al rendimiento: solo se cargan los scripts y los estilos cuando son necesarios (utilizando <).wp_enqueue_script()(Y establecer dependencias y condiciones de carga de manera razonable). Almacenar en caché los resultados de las consultas que consumen mucho tiempo mediante la API de Transients. Evitar ejecutar un gran número de consultas innecesarias a la base de datos durante la inicialización del complemento.
¿Cómo debo depurar y probar mi complemento?
Durante la fase de desarrollo, por favor, haga lo siguiente:wp-config.phpEl archivo está habilitado.WP_DEBUGYWP_DEBUG_LOGEsto registrará los errores y advertencias de PHP en un archivo de registro, lo que facilitará la resolución de problemas. Utilice las herramientas para desarrolladores del navegador para ver las solicitudes de red y los errores de JavaScript. Para depurar la lógica del código,error_log()Las funciones y los complementos como “Query Monitor” son herramientas excelentes. Es imprescindible probarlos en diferentes versiones de PHP y WordPress para garantizar su compatibilidad.
¿Cómo puedo agregar soporte de internacionalización a mi plugin?
En primer lugar, configure correctamente los comentarios en la cabecera del archivo principal.Text Domain(Por ejemplo: my-plugin-text-domain). En el código, use < para indicar que todos los caracteres necesitan ser traducidos.__()(Regresar a la cadena traducida) o_e()(Salida de la cadena traducida) Envuelve la función y pasa tu campo de texto. Luego, usa herramientas como Poedit para crear..potArchivos de plantilla y generación de versiones en diferentes idiomas a partir de ellos..poY.moTraduzca el archivo y colóquelo en el plugin./languages/Catálogo.
¿Cómo puedo publicar mi complemento una vez que esté desarrollado?
Puede optar por publicar el complemento en el catálogo oficial de complementos de WordPress, que es la forma más común de distribución. Esto requiere que su complemento cumpla con la licencia GPL y pase por una revisión de código rigurosa. También puede optar por distribuirlo en su propio sitio web o en mercados de terceros. En cualquier caso, es importante proporcionar documentación clara, registros de actualizaciones, descripciones de compatibilidad y establecer un plan de mantenimiento y actualización continuos.
¿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.
- Los expertos en SEO te enseñan 10 técnicas y métodos clave para dominar la optimización de sitios web en WordPress.
- 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
- Guía completa para el desarrollo de plugins para WordPress: Desde los principios hasta la maestría para crear extensiones profesionales
- Desarrollo de plugins para WordPress: Desde los principios hasta la maestría: Crea tu primer plugin personalizado