Initiation au développement de plugins WordPress : créez votre première extension de fonctionnalités à partir de zéro

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

Pourquoi choisir de développer des plugins pour WordPress ?

En tant que système de gestion de contenu le plus populaire au monde, la grande flexibilité et l’extensibilité de WordPress sont largement dues à son architecture basée sur des plugins. Développer vos propres plugins vous permet de ne plus être limité par les fonctionnalités des plugins existants et de répondre précisément aux besoins spécifiques de votre site web ou de vos clients. Que ce soit pour ajouter un simple code court ou pour créer un panneau de gestion complexe, les plugins permettent de séparer votre logique fonctionnelle du thème utilisé, garantissant ainsi que les fonctionnalités restent intactes même en cas de mises à jour du thème.

Du point de vue de l’apprentissage, comprendre le développement de plugins est une étape essentielle pour approfondir la connaissance du noyau de WordPress. Cela vous permet de découvrir deux concepts fondamentaux : les Action Hooks et les Filter Hooks, qui constituent les bases de la modularité et de l’extensibilité de WordPress. Maîtriser le développement de plugins non seulement améliore vos compétences techniques, mais vous ouvre également de nouvelles opportunités professionnelles et peut même vous permettre de créer des produits numériques vendables.

Préparatifs avant le développement

Avant d’écrire la première ligne de code, vous aurez besoin d’un environnement de développement approprié. Cela comprend généralement un serveur local (tel que Local by Flywheel, XAMPP ou MAMP), un éditeur de code (comme VS Code ou PhpStorm), ainsi qu’un site de test sur lequel WordPress est installé. Assurez-vous que la version PHP utilisée dans votre environnement de test est compatible avec celle utilisée dans l’environnement de production en ligne, afin d’éviter tout problème de compatibilité.

Lectures recommandées Maîtrisez les techniques de base de WordPress : un guide pratique complet, de la configuration à l'optimisation.

Comprendre la structure de base des plugins

Un plugin WordPress de base peut ne contenir qu’un seul fichier PHP. Cependant, un plugin bien structuré comprend généralement plusieurs dossiers et fichiers afin d’offrir une meilleure organisation. Un dossier de plugin typique peut présenter la structure suivante :
– Fichiers principaux du plugin (par exemple…) my-first-plugin.phpC’est le point d’entrée du plugin, qui contient les informations de tête du plugin.
- includes/ Contenu : stocker les fichiers des classes ou fonctions principales.
- admin/ Répertoire : Contient le code lié à l'interface d administration en arrière-plan.
- public/ Répertoire : Contient le code destiné à l'interface utilisateur (front-end) du site web.
- assets/ Répertoire : Il contient des ressources statiques telles que du JavaScript, du CSS et des images.
- languages/ Répertoire : Contient les fichiers de traduction internationale (.po/.mo).

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.

Informations essentielles relatives aux en-têtes des plugins requis

Chaque plugin WordPress doit inclure une annotation de tête de plugin standard en haut de son fichier PHP principal ; c’est essentiel pour que WordPress puisse reconnaître le plugin. Voici un exemple très basique :

<?php
/**
 * Plugin Name:       我的第一个插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个用于学习插件开发的简单示例插件。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Parmi ceux-ci,Plugin Name Ces champs sont obligatoires ; les autres sont optionnels. Cependant, afin d’assurer la complétude et la maintenabilité du plugin, il est conseillé de remplir toutes les informations pertinentes.Text Domain Pour l'internationalisation,Domain Path Indique le répertoire contenant les fichiers de langue.

Construisez votre premier plugin : une fonction de salutation simple.

Examinons cela à travers un exemple concret. Nous allons créer un plugin qui affichera un message de salutation personnalisable en haut du contenu des articles sur un site web.

Créer un fichier de plugin et un répertoire pour celui-ci.

Tout d'abord, dans le répertoire d'installation de WordPress, wp-content/plugins/ Dans le dossier, créez un nouveau dossier et nommez-le… my-greeting-pluginEnsuite, créez un fichier PHP principal dans ce dossier et nommez-le… my-greeting-plugin.phpEt copiez les informations relatives aux en-têtes des plugins mentionnées ci-dessus à l’intérieur.

Lectures recommandées Comment choisir et développer des plugins WordPress de haute qualité : Guide de l’initiation à l’expertise

Utiliser des « hooks » pour ajouter des fonctionnalités

WordPress fonctionne grâce à un système de « hooks » (ou « crochets »). Pour ajouter des informations avant le contenu des articles, nous devons utiliser ces hooks. the_content Filtres et hooks : Dans votre fichier de plugin principal, ajoutez la fonction suivante ainsi que les appels aux hooks correspondants.

/**
 * 在文章内容前添加问候语
 *
 * @param string $content 原始的文章内容。
 * @return string 修改后的文章内容。
 */
function mgp_add_greeting_to_content( $content ) {
    $greeting_text = get_option( 'mgp_greeting_text', '欢迎阅读!' ); // 从数据库获取设置,默认为“欢迎阅读!”
    $custom_greeting = '<div class="mgp-greeting"><p><strong>'`. esc_html($greeting_text)`.'</strong></p></div>';

// 仅对主循环中的单篇文章页面生效
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $custom_greeting . $content;
    }
    return $content;
}
// 将函数挂载到 `the_content` 过滤器
add_filter( 'the_content', 'mgp_add_greeting_to_content' );

Ce code définit une fonction. mgp_add_greeting_to_contentIl reçoit le contenu de l’article et ajoute un conteneur DIV contenant une salutation en début de celui-ci. add_filter() Fonction : Nous allons ajouter une fonction personnalisée à WordPress. the_content Les filtres sont en place. La logique de contrôle intégrée à la fonction assure que les salutations ne s’affichent que dans le cycle principal de la page d’un article individuel sur la page d’accueil, sans affecter les pages d’archive ou les outils supplémentaires.

Créer une page de paramètres de gestion simple.

Afin que les utilisateurs puissent personnaliser le texte de leurs salutations, nous devons ajouter une page de configuration simple. Cela implique l’utilisation de l’API du menu de gestion de WordPress. Continuez à ajouter le code suivant dans le fichier principal du plugin :

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 mgp_register_admin_menu() {
    add_options_page(
        '问候语设置',           // 页面标题
        '问候语插件设置',       // 菜单标题
        'manage_options',      // 所需权限
        'my-greeting-plugin',  // 菜单slug
        'mgp_render_settings_page' // 用于输出页面内容的回调函数
    );
}
add_action( 'admin_menu', 'mgp_register_admin_menu' );

/**
 * 渲染设置页面的内容
 */
function mgp_render_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>Paramètres de la plugin pour les salutations</h1>
        <form method="post" action="/fr/options.php/" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mgp_settings_group' ); // 输出设置组和非ce字段
            do_settings_sections( 'my-greeting-plugin' ); // 输出设置区域
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    <?php
}

/**
 * 初始化插件设置
 */
function mgp_initialize_settings() {
    // 注册一个设置
    register_setting(
        'mgp_settings_group', // 设置组名
        'mgp_greeting_text',  // 选项名,对应数据库中的键
        array( // 可选的验证回调函数
            'sanitize_callback' => 'sanitize_text_field',
            'default' =&gt; '欢迎阅读!'
        )
    );

// 添加一个设置区域
    add_settings_section(
        'mgp_main_section',           // 区域ID
        '主要设置',                   // 区域标题
        null,                         // 区域介绍的回调函数(此处不需要)
        'my-greeting-plugin'          // 页面slug
    );

// 向区域中添加一个字段
    add_settings_field(
        'mgp_greeting_field',         // 字段ID
        '问候语文本',                 // 字段标签
        'mgp_greeting_field_callback', // 用于输出字段HTML的回调函数
        'my-greeting-plugin',         // 页面slug
        'mgp_main_section'            // 区域ID
    );
}
add_action( 'admin_init', 'mgp_initialize_settings' );

/**
 * 渲染问候语文本输入字段
 */
function mgp_greeting_field_callback() {
    $greeting = get_option( 'mgp_greeting_text', '欢迎阅读!' );
    echo '<input type="text" name="mgp_greeting_text" value="' . esc_attr( $greeting ) . '" class="regular-text" />'echo '<p class="description">Cet texte sera affiché en haut de chaque article sur votre site web.</p>';
}

Ce code effectue les tâches suivantes :
1. Utiliser add_action( 'admin_menu', ... ) Un sous-menu a été ajouté à la page du menu “ Paramètres ”.
2. Utiliser add_action( 'admin_init', ... ) Paramètres d'initialisation, comprenant l'option de création d'une base de données, une zone de configuration et un champ d'entrée.
3. Des fonctions ont été définies pour gérer la page des paramètres de rendu, ainsi que les formulaires et les champs qui y sont affichés.
Maintenant, connectez-vous à l’administration de votre WordPress et, dans le menu “ Paramètres ”, vous trouverez les paramètres du plugin “ Greetings ”. Vous pourrez y modifier le texte des salutations et voir immédiatement les changements dans les articles affichés sur la page d’accueil.

Meilleures pratiques et avancées dans le développement d’extensions (plugins)

Après avoir mis en place les fonctionnalités de base, suivre les meilleures pratiques permettra de rendre votre plugin plus professionnel, plus sécurisé et plus facile à maintenir.

La sécurité est la priorité absolue.

Ne faites jamais confiance aux données saisies par les utilisateurs. Dans les plugins, toutes les données provenant de l’extérieur doivent être vérifiées et traitées avec prudence. $_GET$_POST$_COOKIE Toutes les données provenant de requêtes de base de données doivent être vérifiées, nettoyées ou échappées avant d’être affichées ou utilisées.
Sortie d'échappement : utilisez < esc_html()esc_attr()esc_url() et wp_kses_post() et d'autres fonctions.
Nettoyer l'entrée : utiliser sanitize_text_field()sanitize_email()intval() et d'autres fonctions.
– Sécurité des bases de données : utilisation $wpdb Pour effectuer une recherche sur les méthodes d'une classe, ou pour les utiliser, il suffit de… prepare() Paramétrer les requêtes afin de prévenir les injections SQL.
– Vérification des autorisations : Avant d’accéder à la page de gestion ou d’exécuter des opérations sensibles, utilisez la fonction de vérification des autorisations. current_user_can() Vérifiez les autorisations de l'utilisateur et utilisez-les en conséquence. check_admin_referer() Vérifiez le champ nonce pour prévenir les attaques par fausse demande inter-site (CSRF).

Lectures recommandées Maîtrisez les techniques de base de WordPress pour créer un site Web professionnel à la fois fonctionnel et esthétique.

Implémenter l’internationalisation (i18n)

Pour que votre plugin puisse être utilisé par des utilisateurs du monde entier, il est nécessaire de le rendre compatible avec plusieurs langues. Cela implique d’utiliser les fonctions de traduction de WordPress pour encapsuler toutes les chaînes de caractères destinées aux utilisateurs. Modifiez l’affichage des chaînes de caractères dans le code existant.

// 在插件头信息中已定义 Text Domain: my-first-plugin
$greeting_text = get_option( 'mgp_greeting_text', __( '欢迎阅读!', 'my-first-plugin' ) );

// 在管理菜单函数中
add_options_page(
    __( '问候语设置', 'my-first-plugin' ),
    __( '问候语插件设置', 'my-first-plugin' ),
    'manage_options',
    'my-greeting-plugin',
    'mgp_render_settings_page'
);

Ensuite, vous pouvez utiliser un outil comme Poedit pour extraire les chaînes de caractères du code source du plugin et les utiliser pour générer ce que vous souhaitez. .pot Des fichiers modèles, à partir desquels les traducteurs peuvent créer des versions dans différentes langues. .po et .mo Faites des copies des fichiers et placez-les dans le plugin. /languages Catalogue.

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.

Organisation du code et optimisation des performances

Avec l’augmentation des fonctionnalités des plugins, il est judicieux de diviser le code en fichiers distincts. L’utilisation de la programmation orientée objet (POO) et des classes pour organiser le code améliore la lisibilité et la réutilisabilité. Pour les ressources (CSS, JS), il est conseillé de… wp_enqueue_style() et wp_enqueue_script() La fonction est utilisée dans le bon hook (par exemple…). wp_enqueue_scripts Ou admin_enqueue_scriptsLes éléments sont chargés sur demande et les versions des dépendances sont spécifiées. Il est conseillé d’éviter d’effectuer des requêtes de base de données coûteuses directement à l’intérieur des plugins ; pensez à utiliser l’API Transients pour mettre en cache les données non essentielles.

résumés

Vous avez suivi les étapes essentielles pour créer un plugin WordPress complet : depuis la création d’un fichier PHP simple contenant les informations de tête des plugins standard, en passant par l’intégration des hooks d’action et des hooks de filtre dans le cycle de vie de WordPress, jusqu’à la conception d’une interface d’administration et la mise en œuvre de bonnes pratiques de sécurité et d’internationalisation. Ce plugin de salutation, bien que simple, démontre de manière exhaustive le processus de développement de plugins : la planification des fonctionnalités, l’activation des hooks appropriés, le traitement des données et la création d’une interface utilisateur. N’oubliez pas que l’apprentissage continu à partir du manuel officiel, l’analyse du code de plugins open source de qualité et la pratique régulière sont les meilleurs moyens d’améliorer vos compétences en développement de plugins. Votre prochain plugin pourra peut-être résoudre un problème réel plus complexe et plus intéressant.

FAQ Foire aux questions

Un plugin WordPress nécessite au minimum plusieurs fichiers. Quels sont-ils ?

Un plugin WordPress complet ne nécessite au minimum qu’un seul fichier PHP. Il suffit que ce fichier contienne, en haut de sa structure, les informations de déclaration du plugin appropriées (au moins…) Plugin NameLorsque vous téléchargez ce fichier, WordPress sera capable de le reconnaître et de l’activer dans la liste des plugins en arrière-plan. Ce fichier peut contenir tout le code nécessaire pour les fonctionnalités du plugin, ainsi que le code des pages de gestion. Bien sûr, pour les plugins complexes, il est conseillé de diviser le code en plusieurs fichiers et dossiers afin d’en faciliter la maintenance.

Comment éviter que les plugins que j’ai développés ne entrent en conflit avec d’autres plugins ?

La clé pour éviter les conflits réside dans l’utilisation de préfixes uniques pour nommer toutes vos fonctions, classes, variables, noms d’options ainsi que vos hooks d’actions/filtres. Par exemple, ne utilisez pas… add_greeting() Un nom de fonction aussi générique devrait plutôt utiliser quelque chose de plus spécifique… mgp_add_greeting() De tels noms (parmi lesquels) mgp Il s’agit de l’abréviation de votre plugin. Pour les options stockées dans la base de données, il conviendra également d’utiliser un préfixe unique, par exemple… mgp_greeting_textCela permet de réduire au maximum la probabilité de conflits de noms d’espace.

Que faut-il faire lors de l’activation et de la désactivation des plugins ?

Lors de l’activation d’un plugin, il est généralement nécessaire d’exécuter des tâches ponctuelles, telles que vérifier la version de PHP ou de WordPress, créer des tables dans la base de données, initialiser les options par défaut, etc. Cela peut être réalisé à l’aide d’un script automatique qui s’exécute au moment de l’activation du plugin. register_activation_hook() Cette fonction est mise en œuvre pour réaliser ce but. De même…register_deactivation_hook() Ces instructions servent à définir les actions à exécuter lorsque le plugin est désactivé, par exemple pour supprimer les tâches planifiées. Cependant, il faut noter que les hooks de désactivation ne sont généralement pas utilisés pour effacer des données ; la gestion du nettoyage des données est plutôt confiée aux hooks de désinstallation ou aux choix effectués manuellement par l'utilisateur.

Comment ajouter une page de paramétrage à mon plugin ?

L’ajout d’une page de paramétrage pour un plugin implique principalement deux API de WordPress : l’API des menus et l’API des paramétrages. Tout d’abord, il faut utiliser… add_action( 'admin_menu', ... ) Montez une fonction et utilisez-la à l’intérieur de celle-ci. add_menu_page() Ou add_submenu_page() Veuillez vous inscrire pour créer une page de menu de niveau supérieur ou de niveau inférieur. Ensuite, utilisez… add_action( 'admin_init', ... ) Installer une autre fonction et l’utiliser à l’intérieur. register_setting()add_settings_section() et add_settings_field() Définissez les options de configuration spécifiques ainsi que les champs du formulaire. Enfin, rédigez une fonction de rappel (callback) pour rendre le formulaire HTML de la page de configuration.

Quelle version de WordPress doit être compatible avec mon plugin ?

Cela dépend de votre cible d’utilisateurs. En général, il est conseillé de garantir la compatibilité avec les 3 à 4 dernières versions majeures de WordPress. Vous pouvez en faire mention dans les informations de la tête du plugin. Requires at least: Indiquez la version minimale de WordPress requise. Pendant le processus de développement, il convient d’éviter d’utiliser des fonctions très récentes qui ne sont compatibles qu’avec la dernière version de WordPress, ou d’utiliser des fonctionnalités qui ne sont pas encore officialisées ou mises à disposition dans les versions plus anciennes. function_exists() Effectuer des vérifications conditionnelles afin de proposer des alternatives compatibles avec les versions antérieures est une bonne pratique. De plus, tester régulièrement sur des versions plus anciennes de WordPress est un moyen efficace de garantir la compatibilité.