Guide de début pour le développement d’extensions WordPress : Construisez votre première extension à partir de zéro

Lecture en 3 minutes
2026-03-15
2026-06-03
2,254
Je reçois une commission lorsque vous achetez via les liens ci‑dessous, sans frais supplémentaires pour vous.

Préparation de l'environnement de développement pour les plugins WordPress

Avant de commencer à écrire du code, un environnement de développement approprié est essentiel. Il vous permet non seulement de travailler efficacement, mais aussi de simuler l’environnement de production réel, évitant ainsi tout problème de incohérence entre les versions locales et les versions en ligne. Un environnement de développement typique doit inclure un environnement de serveur local, un éditeur de code et des outils de débogage.

Tout d’abord, vous aurez besoin d’un environnement de serveur local capable d’exécuter WordPress. Il est recommandé d’utiliser des paquets d’environnement intégrés tels que Laragon, XAMPP ou Local by Flywheel. Ces outils permettent d’installer Apache/Nginx, PHP et MySQL en un seul clic, évitant ainsi des procédures de configuration complexes. Vérifiez que la version de PHP que vous utilisez est compatible avec la dernière version de WordPress ; il est généralement conseillé d’utiliser PHP 7.4 ou une version ultérieure. De plus, dans l’onglet “Outils” -> “Santé du site” du panneau de contrôle de WordPress, assurez-vous qu’il n’y a pas de problèmes majeurs qui pourraient affecter le développement des plugins.

Deuxièmement, choisissez un éditeur de code performant. Visual Studio Code est actuellement une option très populaire : il est léger, gratuit et dispose d’une grande variété d’extensions, telles que PHP Intelephense (pour des suggestions intelligentes de code) et WordPress Snippet (pour des exemples de code prêts à l’emploi). Une autre option classique est PhpStorm, qui offre un soutien plus avancé pour le développement WordPress, mais il s’agit d’un logiciel payant.

Lectures recommandées De zéro à un : Guide complet et meilleures pratiques pour le développement de plugins WordPress

Enfin, activer le mode de débogage est une étape essentielle dans le processus de développement. Cela se fait en modifiant les fichiers situés dans le répertoire racine de WordPress.wp-config.phpPour les fichiers, vous pouvez activer un rapport d’erreurs détaillé, ce qui est essentiel pour détecter et corriger les problèmes dans le code. Trouvez la définition correspondante dans le fichier.WP_DEBUGDans les endroits où des constantes sont utilisées, vous pouvez ajouter le code suivant :

Hébergement WordPress par UltraHost
Garantie de remboursement dans les 30 jours, bande passante illimitée et base de données, protection gratuite contre les attaques DDoS. Avantage de 501 TP4T pour les achats sur 3 ans.
// 启用 WordPress 调试模式
define( 'WP_DEBUG', true );
// 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_LOG', true );
// 在页面上显示错误(开发环境推荐,生产环境必须关闭)
define( 'WP_DEBUG_DISPLAY', true );

Créez votre premier fichier de plugin.

Un plugin WordPress peut être très simple, ne contenant qu’un seul fichier. Tous les plugins doivent être stockés dans un dossier spécifique défini par WordPress./wp-content/plugins/Chaque plugin peut disposer de son propre sous-dossier, ce qui facilite l’organisation de structures de code plus complexes.

Commentaires en tête du plugin

Chaque fichier principal d’un plugin doit commencer par des commentaires d’en-tête PHP standardisés ; c’est ainsi que WordPress reconnaît les informations sur le plugin. Créez un nouveau fichier et nommez-le…my-first-plugin.phpEt placez-le à l’intérieur./wp-content/plugins/my-first-plugin/Dans le dossier. Le contenu du fichier est le suivant :

<?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
 * Domain Path:       /languages
 */

Cette annotation fournit toutes les métadonnées affichées par le plugin sur la page des “ Plugins ” dans l’administration de WordPress. Parmi celles-ci…Text DomainetDomain PathUtilisé pour la préparation de l'internationalisation (i18n) des plugins.

Réaliser une fonction simple

Maintenant, ajoutons une fonction simple à ce plugin : l'ajout automatique d'une ligne de texte personnalisé à la fin du contenu de l'article. Nous utiliserons les fonctionnalités de WordPress pour cela.the_contentFiltre hook. Celui que vous venez de créer…my-first-plugin.phpEn dessous des commentaires de la tête du fichier, ajoutez la fonction suivante :

Lectures recommandées Maîtriser le développement de plugins WordPress : créer des fonctionnalités personnalisées de A à Z.

// 在文章内容末尾添加自定义文本
function my_first_plugin_add_footer_text( $content ) {
    // 确保只在主循环的单篇文章页面执行
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $footer_text = '<p><em>Merci de lire cet article ! Il vous est présenté par “ Mon premier plugin ”.</em></p>';
        $content .= $footer_text;
    }
    return $content;
}
add_filter( 'the_content', 'my_first_plugin_add_footer_text' );

Après avoir enregistré le fichier, connectez-vous à l’administration de votre WordPress et accédez à la page des “ Plugins ”. Vous devriez y voir un plugin intitulé “ Mon premier plugin ”. Activez-le, puis consultez un article de blog ; vous constaterez que le texte que nous avons défini a été ajouté en bas de l’article.

Utiliser l’API de base de WordPress

Lors du développement avancé, vous interagirez fréquemment avec les différentes API fournies par WordPress. Parmi celles-ci, le système des “ hooks ” est particulièrement essentiel ; il comprend les “ actions ” (Actions) et les “ filtres ” (Filters).

Comprendre les « action hooks »

Les « action hooks » vous permettent d’exécuter du code personnalisé à des moments précis. Par exemple, lorsque un article est publié, vous souhaitez envoyer un e-mail pour en informer les utilisateurs. C’est là qu’ils peuvent être utiles.publish_postAction. L'exemple suivant montre comment créer une fonctionnalité qui enregistre des informations dans le journal des erreurs lors de la publication d'un article :

hosting.com Hébergement partagé
Hautes performances avec les CPU AMD EPYC, stockage SSD NVMe et LiteSpeed, support interne expert 24h/24 et 7j/7, mesures de sécurité avancées, notamment SSL, protection contre la force brute, les logiciels malveillants et le DDoS, économies pouvant aller jusqu'à 73%.
// 定义文章发布时执行的动作函数
function my_first_plugin_log_post_published( $post_id, $post ) {
    // 避免无限循环和非文章类型
    if ( wp_is_post_revision( $post_id ) || $post->post_type != ‘post’ ) {
        return;
    }
    // 记录日志
    error_log( “文章 ID {$post_id} 已发布,标题为:{$post->post_title}” );
}
// 将函数挂载到 publish_post 动作钩子上
add_action( ‘publish_post’, ‘my_first_plugin_log_post_published’, 10, 2 );

La fonctionadd_actionLe troisième paramètre est le niveau de priorité (par défaut 10) ; plus le chiffre est petit, plus le niveau de priorité est élevé. Le quatrième paramètre indique le nombre de paramètres que la fonction accepte.

Comprendre les hooks des filtres

Les hooks de filtre sont utilisés pour modifier les données. Dans la section “ Créez votre premier fichier de plugin ”, nous les avons utilisés…the_contentIl s’agit d’un crochet de filtre (filter hook) qui reçoit le contenu brut et vous permet de le modifier avant de le renvoyer. Un autre exemple courant est la modification de la longueur du résumé d’un article.

// 修改摘要的默认字数
function my_first_plugin_custom_excerpt_length( $length ) {
    return 30; // 将摘要字数改为30字
}
add_filter( ‘excerpt_length’, ‘my_first_plugin_custom_excerpt_length’ );

Ajouter un menu d'accès.

Afin d’interagir avec les utilisateurs, il est souvent nécessaire d’ajouter une page de menu dans le côté bar de gestion du back-office de WordPress. Cela peut être réalisé en…add_menu_pageImplémentation de la fonction. Le code suivant ajoute une page de paramétrage principale au plugin.

Lectures recommandées Guide complet pour le développement de plugins WordPress : Construire des fonctionnalités d'extension de haute qualité pour WordPress, de zéro à un

// 创建插件管理菜单
function my_first_plugin_add_admin_menu() {
    add_menu_page(
        ‘我的第一个插件设置’, // 页面标题
        ‘我的插件’,           // 菜单标题
        ‘manage_options’,     // 所需权限
        ‘my-first-plugin’,    // 菜单slug
        ‘my_first_plugin_settings_page’, // 回调函数,用于输出页面内容
        ‘dashicons-admin-plugins’, // 图标(可选)
        100                    // 菜单位置(可选)
    );
}
add_action( ‘admin_menu’, ‘my_first_plugin_add_admin_menu’ );

// 设置页面的回调函数
function my_first_plugin_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1>Les premières configurations de mon plugin</h1>
        <p>Voici la page de configuration des plugins. À l’avenir, vous pourrez y ajouter des formulaires et des options.</p>
    </div>
    &lt;?php
}

Sécurité des plugins et bonnes pratiques

Lors du développement de plugins destinés à être utilisés par d’autres, la sécurité et la qualité du code ne doivent pas être négligées. Respecter les meilleures pratiques permet de protéger le site web contre les attaques et d’assurer la compatibilité et la maintenabilité des plugins.

La validation et l'échappement des données.

Ne faites jamais confiance aux données saisies par les utilisateurs ou provenant de la base de données. Avant de les afficher dans le navigateur, il est nécessaire de les échapper (« escape ») ; avant de les enregistrer dans la base de données, il est indispensable de les vérifier et de les nettoyer. WordPress propose de nombreuses fonctions d’aide à cet égard.

Hébergement partagé InterServer
Hébergement mutualisé $2.50 USD par mois, premier mois $0.1 USD code promo tryinterserver, 461 scripts cloud apps, installation en un clic.
  • Output en mode échappement : utiliseresc_html()esc_attr()esc_url()etwp_kses_post()Des fonctions telles que celles-ci permettent d’encadrer les données en fonction du contexte, afin de les protéger contre les attaques de type injection de code.
  • Vérifier les données saisies : Utilisersanitize_text_field()sanitize_email()intval()Des fonctions telles que celles-ci sont utilisées pour nettoyer les données des formulaires soumis par les utilisateurs.

Par exemple, lors de la configuration de la page pour traiter les données des formulaires :

$user_input = $_POST[‘some_field’] ?? ‘’; // 使用空合并运算符提供默认值
$clean_input = sanitize_text_field( $user_input ); // 清理数据
update_option( ‘my_plugin_option’, $clean_input ); // 安全存储

Utiliser des méthodes autres que celles basées sur le protocole CE (Common Edge) et les vérifications de droits d’accès.

Lors du traitement des demandes de formulaire (en particulier celles provenant de admin-ajax.php ou admin-post.php), il est obligatoire d’utiliser…wp_verify_nonce()Cela sert à vérifier la légitimité de la demande et à empêcher les attaques de type « Cross-Site Request Forgery » (CSRF). En même temps, il est utilisé…current_user_can()Vérifiez si l'utilisateur actuel dispose des autorisations nécessaires pour effectuer l'opération.

function my_first_plugin_handle_form_submit() {
    // 1. 检查nonce
    if ( ! isset( $_POST[‘my_nonce_field’] ) || ! wp_verify_nonce( $_POST[‘my_nonce_field’], ‘my_action’ ) ) {
        wp_die( ‘安全校验失败!’ );
    }
    // 2. 检查权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        wp_die( ‘权限不足!’ );
    }
    // 3. 安全地处理数据…
}

Organisation du code et internationalisation

Pour les plugins complexes, il est conseillé d’utiliser la programmation orientée objet (POO) pour organiser le code et de modulariser les fonctionnalités en classes. Cela améliore la lisibilité et la réutilisabilité du code.

De plus, il est nécessaire de préparer l’internationalisation du plugin dès le début. Cela signifie que toutes les chaînes de caractères destinées aux utilisateurs doivent utiliser les fonctions de traduction de WordPress.__()_e()Effectuer l'emballage. En consultant les commentaires en tête du plugin, nous avons déjà défini…Text DomainVoici la manière correcte d’utiliser cela dans le code :

$message = __( ‘感谢阅读!本文由“我的第一个插件”为您呈现。’, ‘my-first-plugin’ );

Ensuite, vous pouvez utiliser des outils tels que Poedit pour créer….potFichiers de modèle, destinés aux traducteurs pour générer des versions dans différentes langues..moLes documents.

résumés

À travers ce guide, vous avez accompli le voyage essentiel pour créer votre propre plugin WordPress à partir de zéro. Vous avez appris à mettre en place un environnement de développement, à créer des fichiers de plugin contenant des commentaires de tête standard, et à utiliser le puissant système de crochets (hooks) d’actions et de filtres de WordPress pour y ajouter des fonctionnalités. Nous avons également abordé la manière de mettre en place des menus de gestion de manière sécurisée, de gérer les données, et souligné l’importance de la sécurité et de l’internationalisation. Le développement de plugins est un processus constant d’apprentissage et de pratique ; l’essentiel réside dans la compréhension du système de crochets de WordPress ainsi que des règles de sécurité. À l’avenir, vous pourrez essayer de développer des fonctionnalités plus complexes, telles que la création de tables de base de données personnalisées, l’ajout de codes courts (shortcodes) ou de widgets, ou encore de points d’extrémité API REST, afin de construire progressivement des plugins professionnels et robustes.

FAQ Foire aux questions

Un plugin doit-il être placé dans un dossier séparé ?

Non, un plugin peut très bien n’être qu’un élément indépendant..phpLes fichiers peuvent être placés directement là./wp-content/plugins/Les fichiers sont généralement situés dans un répertoire. Cependant, pour tout plugin qui contient de nombreux fichiers, ressources (telles que JS, CSS) ou des fichiers à traduire, il est fortement conseillé d’utiliser un dossier distinct pour regrouper tous ces éléments. Cela permet de rendre la structure du projet plus claire et de faciliter la gestion.

Comment puis-je faire en sorte que les paramètres de mon plugin soient enregistrés dans une base de données ?

WordPress offre une API d’options très pratique à utiliser.add_option()get_option()etupdate_option()Des fonctions sont disponibles pour ajouter, récupérer et mettre à jour les paramètres des plugins. Ces données sont stockées de manière sécurisée dans le système de WordPress.wp_optionsDans les tables de bases de données, pour une grande quantité de données structurées, il est possible de les sérialiser sous forme d’arrêts ou de chaînes JSON avant de les stocker.

Le plugin que j’ai développé pourrait-il entrer en conflit avec d’autres plugins ?

C’est possible, surtout lorsque les plugins utilisent des crochets (hooks), des noms de fonctions ou des noms de classes communs. Pour éviter les conflits, les meilleures pratiques sont les suivantes : ajoutez un préfixe unique à toutes vos fonctions, classes et variables (par exemple, en utilisant l’abréviation ou le nom du plugin) ; utilisez le « slug » du plugin comme espace de noms (les espaces de noms réels sont disponibles à partir de PHP 5.3+) ; et choisissez le bon niveau de priorité lors de l’utilisation des crochets pour que l’ordre d’exécution corresponde à vos attentes.

Quelles versions de WordPress le plugin doit-il être compatible avec ?

Cela dépend de votre public cible. En général, il est conseillé de garantir la compatibilité avec les versions principales actuelles, ainsi qu’avec la version précédente ou les deux versions précédentes. Vous pouvez le faire dans le cadre de la configuration du plugin…readme.txtLe fichier a été traité (ou transféré, etc.) avec succès.Requires at least:Les champs sont utilisés pour déclarer la version minimale requise de WordPress. Pendant le processus de développement, il convient d’éviter d’utiliser des fonctions disponibles uniquement dans des versions plus récentes de WordPress.function_exists()Effectuer des tests de compatibilité afin d'élargir la portée d'utilisation du plugin.