La composition de base d’un plugin WordPress
Un plugin standard pour WordPress repose sur une composante principale qui se trouve… /wp-content/plugins/ Un dossier indépendant situé dans le répertoire principal. Ce dossier doit contenir au moins un fichier PHP principal, dont les commentaires d’en-tête contiennent les métadonnées de l’extension. C’est cette information qui permet à WordPress de reconnaître et d’activer l’extension.
Les commentaires de tête des plugins sont d’une importance capitale. Ils utilisent un format spécifique pour indiquer au système WordPress le nom du plugin, sa description, sa version, son auteur, ainsi que d’autres informations. Un commentaire de tête de plugin typique est présenté comme suit :
<?php
/**
* Plugin Name: 我的第一个插件
* Plugin URI: https://example.com/my-first-plugin
* Description: 这是一个用于演示的 WordPress 插件。
* Version: 1.0.0
* Author: 开发者名称
* Author URI: https://example.com
* License: GPL v2 or later
* Text Domain: my-first-plugin
*/ Ce code doit être placé en début du fichier principal du plugin.Plugin Name Ces informations sont obligatoires ; les autres sont optionnelles. Lorsque WordPress scanne le répertoire des plugins, c’est en lisant ces données qu’il affiche la liste des plugins dans l’interface d’administration en arrière-plan.
Lectures recommandées Développement de plugins pour WordPress : de l’initiation à la maîtrise : Comment créer votre premier plugin personnalisé pas à pas。
En plus du fichier principal, un plugin complet contient généralement d’autres fichiers et dossiers, par exemple ceux destinés à stocker les ressources JavaScript et CSS. assets Dossiers, utilisés pour la traduction. languages Dossier utilisé pour contenir les fichiers de classe. includes Dossiers, ainsi que des fichiers de modèle utilisés pour l'affichage en front-end. Une bonne structure de répertoire est la base de la maintenance et de l'extensibilité des plugins.
Comprendre les mécanismes fondamentaux de WordPress : les « hooks »
La philosophie fondamentale du développement de plugins pour WordPress repose sur les “ hooks ” et les “ callbacks ”. Les hooks permettent aux développeurs d’insérer leur propre code personnalisé à des moments précis de l’exécution du code de base de WordPress, afin de modifier ou d’améliorer les fonctionnalités par défaut, sans avoir à modifier directement les fichiers du noyau du système. Cela assure la pureté du noyau de WordPress ainsi que la sécurité des mises à jour des plugins.
Les hooks se divisent principalement en deux types : les hooks d’action et les hooks de filtre.
L'utilisation des crochets d'action.
Les « action hooks » sont exécutés lors de l’occurrence d’événements spécifiques, tels que la publication d’un article, le chargement d’une page de gestion ou le connexion d’un utilisateur. Ils ne sont pas conçus pour retourner de valeurs et servent principalement à effectuer des tâches spécifiques. Les développeurs les utilisent pour mettre en œuvre des fonctionnalités supplémentaires dans leur application. add_action() La fonction permet d’associer une fonction personnalisée (fonction de rappel, ou callback) à un crochet d’action spécifié.
Par exemple, si nous voulons ajouter automatiquement une déclaration de droits d’auteur à la fin de chaque article, nous pouvons utiliser cette fonctionnalité. the_content Ce hook d’action (bien qu’il soit souvent utilisé comme filtre, il illustre ici le concept d’action en soi). Un exemple plus typique consisterait à exécuter une certaine opération lors de l’initialisation de WordPress.
Lectures recommandées Du débutant à l’expert en développement de plugins WordPress : apprenez pas à pas à créer vos propres fonctionnalités sur mesure。
function myplugin_setup() {
// 初始化插件,例如创建数据库表
}
add_action( 'init', 'myplugin_setup' ); Le code ci-dessus indique que lorsque WordPress exécute… init Lors de cette action, les éléments que nous avons définis seront exécutés en même temps. myplugin_setup Une fonction.
L'utilisation des filtres hook.
Les hooks de filtre sont utilisés pour modifier des données. Ils acceptent une variable et en retournent une autre, modifiée. Les développeurs les utilisent pour effectuer des ajustements sur les données avant leur affichage ou leur traitement ultérieur. add_filter() Cette fonction permet d’installer des fonctions de filtrage personnalisées. C’est la méthode la plus couramment utilisée pour modifier le contenu des articles, leurs titres, les liens, ainsi que d’autres données.
En suivant l'exemple précédent, la manière la plus correcte d'ajouter des informations de copyright au contenu d'un article est d'utiliser… the_content Filtre :
function myplugin_add_copyright( $content ) {
if ( is_single() ) {
$content .= '<p>Les droits d’auteur de cet article appartiennent à ce site. Veuillez indiquer la source lorsque vous le reproduisez.</p>';
}
return $content;
}
add_filter( 'the_content', 'myplugin_add_copyright' ); Dans cet exemple, la fonction… myplugin_add_copyright Recevoir l’original. $content La variable contient un texte HTML qui est ajouté à la fin de son contenu. Le contenu modifié est ensuite retourné. WordPress utilisera cette valeur retournée à la place du contenu original pour l'affichage.
Création d'une page de gestion des plugins
De nombreux plugins nécessitent des options de configuration dans l’administration de WordPress, ce qui implique la création de pages de gestion. WordPress propose une série de fonctions permettant d’ajouter des éléments de menu principaux ou secondaires.
Ajouter un élément de menu de niveau supérieur
utiliser add_menu_page() La fonction peut créer un menu principal indépendant en arrière-plan pour un plugin. Cette fonction nécessite plusieurs paramètres, notamment le titre de la page, le titre du menu, les autorisations nécessaires, un alias pour le menu, ainsi qu’une fonction de rappel (callback function).
Lectures recommandées Guide d’introduction au développement de plugins WordPress : créez votre première extension fonctionnelle à partir de zéro.。
Voici un exemple de code permettant de créer une page de gestion de niveau supérieur simple :
function myplugin_add_admin_menu() {
add_menu_page(
'我的插件设置', // 页面标题
'我的插件', // 菜单标题
'manage_options', // 所需权限(管理员)
'myplugin-settings', // 菜单别名(URL中的slug)
'myplugin_settings_page', // 用于输出页面内容的回调函数
'dashicons-admin-generic', // 图标(使用Dashicons)
80 // 菜单位置
);
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );
// 定义输出页面内容的回调函数
function myplugin_settings_page() {
?>
<div class="wrap">
<h1>Les paramètres de mon plugin</h1>
<form method="post" action="/fr/options.php/" data-trp-original-action="options.php">
<?php
settings_fields( 'myplugin_settings_group' );
do_settings_sections( 'myplugin-settings' );
submit_button();
?>
<input type="hidden" name="trp-form-language" value="fr"/></form>
</div>
<?php
} Ce code commence par… add_action Ajoutez la fonction de montage du menu… admin_menu Un « crochet » (hook) : il s’exécute lorsque le menu est chargé en arrière-plan. myplugin_add_admin_menuCréez un nouveau menu principal appelé “ Mes plugins ”. Lorsque vous cliquerez sur ce menu, WordPress l’activera automatiquement. myplugin_settings_page Une fonction est utilisée pour rendre le contenu de la page.
Configuration de l'hébergement des champs et des options
Il ne suffit pas de disposer d’une simple structure de page ; nous devons également créer des champs de formulaire sur celle-ci et stocker de manière sécurisée les valeurs saisies par les utilisateurs. L’API Settings de WordPress a été conçue précisément pour cela, car elle permet de gérer automatiquement la validation des données, leur stockage ainsi que l’ génération de jetons de sécurité (nonce).
Tout d’abord, nous devons enregistrer une option de configuration, un bloc de paramètres, ainsi que les champs spécifiques qui y sont associés.
function myplugin_settings_init() {
// 1. 注册一个设置选项到数据库
register_setting( 'myplugin_settings_group', 'myplugin_options' );
// 2. 在页面内添加一个设置区块
add_settings_section(
'myplugin_section_main',
'主要设置',
null,
'myplugin-settings'
);
// 3. 在区块内添加一个具体的字段
add_settings_field(
'myplugin_field_text',
'示例文本输入',
'myplugin_field_text_render', // 渲染字段HTML的回调函数
'myplugin-settings',
'myplugin_section_main'
);
}
add_action( 'admin_init', 'myplugin_settings_init' );
// 定义字段的HTML输出
function myplugin_field_text_render() {
$options = get_option( 'myplugin_options' );
$value = $options['text_field'] ?? '';
?>
<input type='text' name='myplugin_options[text_field]' value='<?php echo esc_attr( $value ); ?>'>
<?php
} Grâce à cet API, après l’envoi d’un formulaire, les données seront automatiquement sauvegardées. wp_options Dans le tableau, la colonne nommée… myplugin_options Dans les enregistrements (un tableau sérialisé), les développeurs peuvent utiliser… get_option( ‘myplugin_options’ ) Obtenir ces valeurs de manière sécurisée, que ce soit du côté du front-end ou du back-end.
Sécurité des plugins et bonnes pratiques
Pour développer un plugin populaire, la sécurité et la qualité du code sont des éléments essentiels à ne pas négliger. En suivant les meilleures pratiques, il est possible de réduire au maximum les vulnérabilités courantes et d’améliorer l’expérience utilisateur.
Validation, échappement et nettoyage des données
Tous les données provenant des utilisateurs ou de sources externes sont considérées comme non fiables. Avant de les afficher dans le navigateur (partie client), il est nécessaire de les échapper pour éviter les attaques de type cross-site scripting (XSS). Lorsque ces données sont stockées dans une base de données (partie serveur), il est essentiel de les nettoyer et de les vérifier.
WordPress propose de nombreuses fonctions d’aide. Pour le contenu à afficher dans HTML, il est possible d’utiliser… esc_html(), esc_attr(), esc_url() Pour les fonctions de type « attendre », utilisez… (La phrase est inachevée dans le texte original ; il manque des informations pour compléter la traduction.) wp_json_encode()Lors des opérations sur la base de données, il faut toujours utiliser… $wpdb->prepare() Effectuer des requêtes paramétrées, ou utiliser des outils tels que… sanitize_text_field(), intval() Des fonctions telles que celles-ci sont utilisées pour nettoyer les données saisies.
// 不安全的做法
echo $_GET['user_input'];
// 安全的做法:输出到HTML内容
echo esc_html( $_GET['user_input'] );
// 安全的做法:用于HTML属性
$url = esc_url( $_GET['url'] );
echo "<a href='/fr/$url/'>lien</a>";
// 安全的做法:清理后存入数据库
$clean_title = sanitize_text_field( $_POST['title'] );
update_post_meta( $post_id, ‘title’, $clean_title ); Préparation à l’internationalisation et à la localisation
Pour que les plugins puissent être utilisés par des utilisateurs du monde entier, il est essentiel de les préparer pour l’internationalisation. Cela signifie que toutes les chaînes de caractères destinées aux utilisateurs ne doivent pas être codées de manière fixe dans le code, mais doivent être encapsulées à l’aide de fonctions de traduction.
WordPress utilise le framework GNU gettext. Dans le code, il est utilisé pour gérer la traduction des contenus. __() Traduisez et retournez la chaîne de caractères en utilisant : _e() Traduisez et sortez directement la chaîne de caractères. En même temps, vous devez la définir dans les commentaires en tête du plug-in. Text DomainEt l’utiliser lors du chargement du plugin. load_plugin_textdomain() Une fonction est utilisée pour charger les fichiers de traduction.
// 定义可翻译的字符串
$greeting = __( ‘Hello, World!', ‘my-first-plugin’ );
_e( ‘Settings saved successfully!', ‘my-first-plugin’ );
// 在插件初始化时加载翻译
function myplugin_load_textdomain() {
load_plugin_textdomain( ‘my-first-plugin’, false, dirname( plugin_basename( __FILE__ ) ) . ‘/languages/’ );
}
add_action( ‘init’, ‘myplugin_load_textdomain’ ); Les développeurs doivent utiliser des outils tels que Poedit pour générer le contenu nécessaire. .pot Fichiers de modèle, destinés aux traducteurs pour créer des versions dans différentes langues. .po Et après compilation. .mo Les fichiers linguistiques prêts à l’emploi doivent être placés dans le dossier du plugin. /languages/ Cela se trouve dans le répertoire. C’est une étape clé pour que les plugins puissent se développer sur le marché international.
résumés
Le développement de plugins pour WordPress consiste à transformer des idées en fonctionnalités concrètes, et l’essentiel réside dans la compréhension et l’utilisation maîtrisée du système de hooks. Tout commence par la création d’un fichier principal contenant les bonnes annotations de tête. Les hooks d’action interviennent dans le flux d’exécution, tandis que les hooks de filtre modifient la sortie des données. L’API Settings fournie par WordPress permet de créer des interfaces d’administration en arrière-plan de manière sûre et standardisée. Respecter strictement les règles de sécurité (validation, échappement des caractères, nettoyage des données) ainsi que les normes d’internationalisation est essentiel pour que les plugins deviennent matures, stables et largement utilisés. N’oubliez pas qu’un bon plugin est non seulement puissant, mais aussi sûr, efficace et facile à utiliser par des utilisateurs du monde entier.
FAQ Foire aux questions
Combien de fichiers est nécessaire au minimum pour un plugin ?
Un plugin nécessite au minimum un fichier PHP. Il suffit que ce fichier contienne les commentaires d’en-tête appropriés pour un plugin WordPress, et qu’il soit placé dans la bonne directory du projet. /wp-content/plugins/ Il suffit de le placer dans le répertoire principal (ou dans un sous-répertoire) pour que WordPress le reconnaisse et l’active automatiquement.
Comment déboguer le code de mon plug-in ?
Il est conseillé de procéder dans l’environnement de développement. wp-config.php L'activation du mode de débogage de WordPress dans le fichier. Veuillez noter que vous devez avoir un compte WordPress pour utiliser cette fonctionnalité. WP_DEBUG La constante est définie à trueDe plus, il est possible de faire des paramétrages. WP_DEBUG_LOG Pour trueEnregistrez les informations d'erreur dans… /wp-content/debug.log Il est important de ne pas afficher les fichiers directement sur la page. De plus, il est essentiel d’utiliser les outils de développement du navigateur pour consulter la console ainsi que les requêtes réseau.
Où devraient se trouver les options des plugins ?
Pour les paramétrages simples de paires clé-valeur, il est fortement conseillé d’utiliser l’API Options de WordPress. add_option(), update_option(), get_option() Les données sont stockées en toute sécurité après que la fonction ait effectué ses opérations. wp_options Dans les tables de base de données, pour gérer de grandes quantités de données structurées, il est possible de créer des tables personnalisées. Cependant, cela implique une gestion plus complexe de leur cycle de vie (création lors de l’installation et suppression lors du déinstallation).
Comment rendre mon plugin compatible avec un plus grand nombre de versions de WordPress ?
Pendant le développement, évitez d’utiliser des fonctions trop novatrices qui ne sont disponibles que dans les versions plus récentes de WordPress. Pour les fonctions plus récentes que vous souhaitez utiliser, assurez-vous de les tester préalablement avant de les intégrer dans votre projet. function_exists() Effectuez une vérification et proposez une solution de dégradation élégante pour le plugin. readme.txt Le fichier indique clairement la version minimale de WordPress pour laquelle les tests ont été réussis. Effectuer des tests régulièrement sur différentes versions de WordPress est la meilleure façon de garantir la compatibilité.
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.
- 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
- Guide complet pour le développement de plugins WordPress : De l’initiation à la maîtrise pour créer des extensions professionnelles
- Développement de plugins pour WordPress : de l’initiation à la maîtrise : Créez votre premier plugin personnalisé
- De zéro à un : Guide complet pour développer votre premier plugin WordPress pas à pas