La structure de base et les fichiers des plugins WordPress
Un plugin WordPress standard nécessite au moins un fichier principal. Ce fichier principal porte généralement le même nom que le plugin lui-même, par exemple… my-first-plugin.phpAu début de ce fichier, il doit y avoir une annotation de type en-tête de fichier spécifique, destinée à déclarer les métadonnées du plugin au système WordPress. Ces informations comprennent le nom du plugin, sa description, sa version, son auteur, etc., et elles seront affichées sur la page de gestion des plugins en back-office.
En plus du fichier principal, un plugin complet contient généralement d’autres dossiers et fichiers pour organiser le code. Les structures de dossiers courantes comprennent ceux destinés à stocker les fichiers CSS et JavaScript./assetsLe répertoire contient des fichiers de classe PHP./includesLe répertoire, ainsi que les éléments utilisés pour les modèles d'interface utilisateur./templatesSommaire. Cette structure modulaire facilite la maintenance du code et la collaboration au sein de l’équipe.
Le fichier principal d’un plugin constitue le point d’entrée pour l’ensemble de ses fonctionnalités. En plus de déclarer les métadonnées nécessaires, ses principales responsabilités comprennent l’enregistrement et l’activation/désactivation des événements (« hooks »), l’incorporation des fichiers dépendants requis, ainsi que l’initialisation des fonctionnalités essentielles du plugin. Grâce à une organisation judicieuse des fichiers, il est possible de garantir que le plugin conserve une structure claire, même s’il est complexe.
Lectures recommandées Guide d’introduction au développement de plugins WordPress.。
Créez votre premier plugin de base.
Commençons par créer le plugin le plus simple possible, “ Hello World ”, afin de nous familiariser avec le processus de création des plugins ainsi que avec leur cycle de vie de base.
Définir les informations des plugins et la fonction principale
Tout d’abord, dans le répertoire d’installation de WordPress local./wp-content/plugins/Dans le chemin indiqué, créez un nouveau dossier nommé “ hello-world ”. À l’intérieur de ce dossier, créez un fichier nommé… (le nom du fichier n’est pas spécifié dans le texte original).hello-world.phpLe fichier…
En début de ce fichier, vous devez ajouter des informations relatives à la tête du plugin. Une tête de plugin typique se présente comme suit :
<?php
/**
* Plugin Name: 你好世界示例插件
* Plugin URI: https://yourwebsite.com/hello-world
* Description: 这是一个用于演示的简单WordPress插件。
* Version: 1.0.0
* Author: 你的名字
* Author URI: https://yourwebsite.com
* License: GPL v2 or later
* Text Domain: hello-world
* Domain Path: /languages
*/ Ensuite, nous allons ajouter une fonction simple à ce plugin : ajouter automatiquement un texte à la fin du contenu de l’article. Nous pouvons y parvenir en…the_contentIl faut utiliser des filtres pour réaliser cela. Ajoutez le code suivant après les informations en tête du fichier principal :
function hello_world_add_footer_text( $content ) {
// 仅在单篇文章页面添加
if ( is_single() ) {
$footer_text = '<p><em>Cet article a été généré par le plugin “ Hello World ”.</em></p>';
$content .= $footer_text;
}
return $content;
}
add_filter( 'the_content', 'hello_world_add_footer_text' ); Gérer l’activation et la désactivation des plugins
Les plugins professionnels doivent gérer correctement la logique liée à leur activation et à leur désactivation. Par exemple, lors de l’activation d’un plugin, il peut être nécessaire de créer des tables dans une base de données ou de définir des options par défaut ; lors de sa désactivation, il peut être nécessaire de supprimer des données temporaires. Nous utilisons…register_activation_hooketregister_deactivation_hookUne fonction est utilisée pour enregistrer le crochet (hook) correspondant.
Lectures recommandées Du niveau débutant au niveau expert dans le développement de plugins WordPress : créer des fonctionnalités personnalisées et des extensions efficaces.。
Ajoutez le code au fichier principal.
// 插件激活时执行的操作
function hello_world_activate() {
// 例如:添加一个选项到数据库
if ( ! get_option( 'hello_world_installed' ) ) {
add_option( 'hello_world_installed', time() );
}
// 可以在这里刷新固定链接规则,以确保新注册的URL结构生效
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'hello_world_activate' );
// 插件停用时执行的操作
function hello_world_deactivate() {
// 例如:删除我们创建的临时选项(谨慎操作,用户数据通常不删除)
// delete_option( 'hello_world_installed' );
// 清理重写规则
flush_rewrite_rules();
}
register_deactivation_hook( __FILE__, 'hello_world_deactivate' ); Après avoir suivi les étapes ci-dessus, vous pourrez voir et activer le plugin “ Hello World Example ” sur la page des plugins du back-office de WordPress. Une fois activé, lorsque vous consulterez n’importe quel article, vous verrez le texte ajouté en bas de la page.
Améliorer les fonctionnalités en utilisant l’API de base de WordPress
WordPress offre une API extrêmement riche, qui permet aux développeurs de plugins d’interagir de manière sûre et standardisée avec le système principal. Maîtriser ces API est essentiel pour mener des développements professionnels.
Utiliser des crochets d’action et des filtres
Les “ Action Hooks ” vous permettent d’insérer et d’exécuter votre propre code à des moments précis. Par exemple, lorsque un article est publié, WordPress déclenche automatiquement ces hooks.save_postAction. Vous pouvez le faire en…add_action()La fonction enregistre (ou « monte ») sa propre fonction sur ce crochet (ou point d’interception).
function hello_world_on_post_publish( $post_id, $post, $update ) {
// 检查是否不是修订版本,并且是发布操作
if ( wp_is_post_revision( $post_id ) || $post->post_status != 'publish' ) {
return;
}
// 发送邮件通知或执行其他逻辑
// wp_mail( '[email protected]', '新文章已发布', '文章标题:' . $post->post_title );
}
add_action( 'save_post', 'hello_world_on_post_publish', 10, 3 ); Les « filtres hook » (Filter Hooks) vous permettent de modifier les données. Comme mentionné précédemment…the_contentUn exemple typique d’application de filtre est celui-ci. Un autre exemple courant concerne la modification des titres d’articles.
function hello_world_modify_title( $title ) {
return '【推荐】' . $title;
}
// add_filter( 'the_title', 'hello_world_modify_title' ); // 谨慎使用,这会修改所有标题 Créer un menu d’administration et une page d’options
De nombreux plugins nécessitent une interface d administration pour configurer leurs paramètres. WordPress propose des fonctions qui permettent d’ajouter facilement des menus principaux ou des sous-menus dans l’administration du site.
Lectures recommandées Maîtriser le développement de plugins WordPress : créer des modules de fonctionnalités personnalisées et efficaces à partir de zéro.。
Le code suivant montre comment ajouter une page d'options simple et utiliser l'API de configuration de WordPress pour enregistrer une option de manière sécurisée.
// 步骤1:向管理后台添加一个菜单项
function hello_world_add_admin_menu() {
add_menu_page(
'你好世界设置', // 页面标题
'你好世界插件', // 菜单标题
'manage_options', // 所需权限
'hello-world-settings', // 菜单slug
'hello_world_settings_page', // 用于渲染页面的回调函数
'dashicons-admin-generic', // 图标(可选)
80 // 菜单位置
);
}
add_action( ‘admin_menu‘, ‘hello_world_add_admin_menu’ );
// 步骤2:定义设置页面的HTML内容
function hello_world_settings_page() {
?>
<div class="”wrap”">
<h1>Paramètres du plugin « Hello World »</h1>
<form method="”post”" action="/fr/”options.php”/" data-trp-original-action="”options.php”">
<?php
settings_fields( ‘hello_world_settings_group’ ); // 输出设置字段和非ce字段
do_settings_sections( ‘hello-world-settings’ ); // 输出设置部分
submit_button(); // 输出提交按钮
?>
<input type="hidden" name="trp-form-language" value="fr"/></form>
</div>
<?php
}
// 步骤3:注册设置、字段和章节
function hello_world_settings_init() {
// 注册一个新的设置项到“hello_world_settings_group”组
register_setting( ‘hello_world_settings_group’, ‘hello_world_custom_message’ );
// 在页面中新增一个章节
add_settings_section(
‘hello_world_settings_section’,
‘自定义消息设置’,
‘hello_world_settings_section_callback’,
‘hello-world-settings‘
);
// 向章节中添加一个字段
add_settings_field(
‘hello_world_message_field’,
‘前台显示的消息’,
‘hello_world_message_field_render’,
‘hello-world-settings’,
‘hello_world_settings_section’
);
}
add_action( ‘admin_init’, ‘hello_world_settings_init’ );
// 章节描述的回调函数
function hello_world_settings_section_callback() {
echo ‘<p>Ici, vous configurez le contenu des messages affichés par les plugins sur l'interface utilisateur.</p>’;
}
// 字段渲染的回调函数
function hello_world_message_field_render() {
$option = get_option( ‘hello_world_custom_message’, ‘这是默认消息’ );
echo ‘<input type="”text”" name="”hello_world_custom_message”" value="”‘" . esc_attr( $option ) ‘“ size ="”40”" />’;
} Avec le code ci-dessus, vous avez créé en arrière-plan une page de configuration qui respecte les normes de WordPress et permet de sauvegarder des données de manière sécurisée.
Sécurité des plugins, performances et préparation à leur publication
Avant de partager un plugin avec d’autres personnes ou de le soumettre au répertoire officiel, il est essentiel de s’assurer qu’il est sûr, efficace et facile à utiliser.
遵循安全最佳实践
La sécurité est la priorité absolue dans le développement de plugins. Le principe fondamental est le suivant : ne jamais faire confiance aux données saisies par les utilisateurs. Toutes les données provenant des utilisateurs ou de sources externes doivent être traitées avec prudence et vérifiées rigoureusement.$_GET, $_POST, $_COOKIEAvant de les utiliser pour des requêtes de base de données, de les afficher sur une page ou d'exécuter des commandes système, il est nécessaire de les vérifier, de les nettoyer et de les échapper.
Pour le contenu affiché dans un fichier HTML, utilisez…esc_html(), esc_attr()Ouwp_kses_post()effectuer l’échappement à l’aide de fonctions similaires.
echo ‘<div class="”“‘" . esc_attr( $user_provided_class ) ‘“>’ . esc_html( $user_provided_content ) . ‘</div>’; Pour les requêtes de base de données, il est absolument interdit de joindre des variables directement dans les instructions SQL. Il faut obligatoirement utiliser des méthodes appropriées pour intégrer ces variables dans les requêtes.$wpdb->prepare()La méthode est utilisée pour le prétraitement des données.
global $wpdb;
$user_id = 123;
$query = $wpdb->prepare(
“SELECT * FROM {$wpdb->prefix}my_table WHERE user_id = %d”,
$user_id
);
$results = $wpdb->get_results( $query ); De plus, toutes les fonctions de rappel accessibles par les utilisateurs (que ce soit via des requêtes AJAX en front-end ou des opérations en arrière-plan) doivent utiliser…current_user_can()Oucheck_ajax_referer()Utilisez des fonctions telles que celles-ci pour effectuer des vérifications de droits d’accès et de sécurité.
Optimiser les performances des plugins
Les plugins dont les performances sont médiocres peuvent affecter l’expérience utilisateur de tout le site web. L’optimisation peut être réalisée à plusieurs niveaux : utiliser efficacement la mémoire cache pour éviter d’exécuter des requêtes complexes sur la base de données ou des appels à des API distantes à chaque chargement de page. WordPress propose des API temporaires (ou « transient APIs ») pour faciliter cette optimisation.(Transients API)Cela permet de stocker facilement des données temporaires.
// 尝试从缓存获取数据
$data = get_transient( ‘my_plugin_expensive_data’ );
if ( false === $data ) {
// 缓存中没有,执行昂贵操作
$data = expensive_database_query();
// 将结果缓存12小时
set_transient( ‘my_plugin_expensive_data’, $data, 12 * HOUR_IN_SECONDS );
} Deuxièmement, assurez-vous que les fichiers CSS et JavaScript ne soient chargés que sur les pages nécessaires. Pour ce faire, utilisez des mécanismes de chargement dynamique qui ne chargent ces fichiers que lorsque l’utilisateur accède à ces pages.wp_enqueue_script()etwp_enqueue_style()Les fonctions permettent de contrôler de manière précise le chargement des ressources ainsi que leurs dépendances. Pour les ressources du backend, il est possible de les mettre en œuvre (de les « monter ») de manière appropriée dans le système.admin_enqueue_scriptsCrochet ; pour les ressources frontales, elles sont montées (c’est-à-dire mises à disposition) sur le système.wp_enqueue_scriptsCrochet.
Préparer pour l’internationale et la publication.
Afin que les plugins puissent être utilisés par des utilisateurs du monde entier, l’internationalisation (i18n) est une étape essentielle. Cela signifie que vous devez envelopper toutes les chaînes de caractères destinées aux utilisateurs à l’aide de fonctions spécifiques.
Remplacer les chaînes de caractères dans le plugin par :
echo “Hello World!”; Modifiez-le en :
echo __( ‘Hello World!’, ‘hello-world’ ); Parmi ceux-ci,‘hello-world’C’est vous qui avez défini cela dans la partie en tête du plugin.Text DomainEnsuite, vous pouvez utiliser des outils tels que Poedit pour générer le contenu souhaité..potDes fichiers modèles, à partir desquels les traducteurs peuvent créer des versions dans différentes langues..poet.moFichiers. Placez ces fichiers de traduction dans la partie en tête du plugin.Domain PathLe répertoire spécifié (par exemple…)/languagesIl suffit de cliquer dessous.
Avant la publication, veillez à rédiger un document détaillé.readme.txtLe fichier doit respecter les exigences officielles de WordPress et contenir une description du plugin, des instructions d’installation, ainsi que des réponses aux questions fréquentes. C’est une exigence obligatoire pour soumettre le plugin au répertoire des plugins de WordPress. De plus, l’ajout d’annotations PHP détaillées dans le code du plugin est très utile pour que d’autres personnes comprennent son fonctionnement et reflète également un niveau de professionnalisme.
résumés
Cet article présente de manière systématique le processus complet pour développer un plugin WordPress professionnel à partir de zéro. Nous avons commencé par comprendre la structure de base d’un plugin, puis avons créé notre premier plugin simple doté d’une logique d’activation/désactivation. Ensuite, nous avons exploré en détail le puissant système de crochets (hooks) d’actions et de filtres de WordPress, ainsi que la manière de l’intégrer profondément au noyau du système, et avons créé des pages de configuration standard pour la gestion du plugin. Enfin, nous avons souligné l’importance des normes de sécurité, des méthodes d’optimisation de la performance et des préparatifs pour une publication internationale dans le cadre du développement de plugins. En maîtrisant ces connaissances et compétences essentielles, vous serez en mesure de créer des plugins WordPress professionnels sûrs, efficaces et faciles à maintenir, afin de répondre aux besoins des utilisateurs individuels ou de servir un public plus large.
FAQ Foire aux questions
Quelles connaissances de base sont nécessaires pour développer des plugins pour WordPress ?
Pour développer des plugins pour WordPress, il est essentiel de disposer d’une solide base en programmation PHP, car le code des plugins est principalement écrit en PHP. Il est également nécessaire de connaître les fondamentaux d’HTML, CSS et JavaScript pour gérer l’affichage et les interactions sur le côté client. Le plus important est de maîtriser les concepts clés de WordPress, tels que les hooks, les codes courts (shortcodes), les types d’articles personnalisés (Custom Post Types – CPT) ainsi que les opérations sur la base de données.$wpdbL'utilisation de…
Comment déboguer un plugin WordPress en cours de développement ?
Une méthode de débogage efficace consiste à activer les fonctionnalités de débogage intégrées à WordPress.WP_DEBUGMode. Dans le vôtre…wp-config.phpDans le document, il sera indiqué que...define( ‘WP_DEBUG’, false );se transformer endefine( ‘WP_DEBUG’, true );Vous pouvez également les activer en même temps.WP_DEBUG_LOGEnregistrez les erreurs dans un fichier de journal, ou activez cette fonctionnalité.WP_DEBUG_DISPLAYAfficher les erreurs sur la page (seulement dans l'environnement de développement). De plus, l'utilisation des outils de développement du navigateur (onglets Console et Network) est essentielle pour déboguer le JavaScript client et les requêtes AJAX.
Comment mon plugin peut-il être compatible avec d’autres plugins ?
La clé pour assurer une bonne compatibilité réside dans le respect des normes de codage de WordPress, ainsi qu’une utilisation prudente des variables et des noms de fonctions globales. L’ajout d’un préfixe unique aux noms des fonctions, des classes et des constantes de votre plugin est la meilleure pratique pour éviter les conflits de noms. Par exemple, vous pouvez utiliser…myplugin_Les développeurs peuvent également utiliser des abréviations en tant que préfixes. Lorsque vous modifiez des contenus qui pourraient être liés à d’autres plugins (comme le contenu des articles ou leurs titres), veillez à ce que la fonction de rappel de votre filtre (filter callback) ait la priorité appropriée.add_filterLe troisième paramètre), et prêtez attention au format de la valeur retournée. Utilisez-le de manière appropriée.class_exists()Oufunction_exists()Pour vérifier si une classe ou une fonction a été définie, il est possible de mettre en œuvre un chargement conditionnel ou de fournir une solution de remplacement.
Est-il nécessaire de maîtriser la programmation orientée objet (POO) pour développer des plugins ?
虽然使用传统的面向过程编程方式也可以开发功能完整的插件,但强烈推荐学习和使用面向对象编程(OOP)。OOP能够更好地组织代码,通过类(Class)来封装功能,提高代码的可复用性和可维护性。对于中大型插件项目,使用OOP结合命名空间(Namespaces)和自动加载(Autoloading)是行业内的标准做法,它能让你更清晰地区分不同模块,并显著降低代码的耦合度。
Quelle est la suite, quelle est la suite ?
Lecture approfondie et connaissances pratiques
Les articles suivants sont liés au sujet de cet article et peuvent faire l'objet d'une lecture plus approfondie. Il est souvent préférable de commencer par l'article qui se rapproche le plus de votre problème actuel, puis d'étendre progressivement la lecture aux sujets environnants.
- Comment choisir et personnaliser le thème WordPress parfait pour vous ?
- Guide de développement de plugins pour WordPress : Créez votre premier plugin personnalisé de zéro à un
- Devenir développeur de plugins pour WordPress : Un guide complet de A à Z
- De zéro à un : Guide complet et astuces pratiques pour construire un site web professionnel avec WordPress
- Débuter de zéro : La chaîne complète du développement de thèmes WordPress modernes et les meilleures pratiques