Guide d’introduction au développement de plugins WordPress : construire votre première extension de fonctionnalité de A à Z.

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

Préparation et aménagement de l'environnement.

Avant de commencer à écrire du code, vous aurez besoin d’un environnement de développement approprié. Cela inclut une installation locale de WordPress ainsi qu’un éditeur de code. Il est recommandé d’utiliser des outils tels que XAMPP, MAMP, Local by Flywheel ou Laragon pour mettre en place rapidement un environnement de serveur local. Assurez-vous que votre environnement utilise une version récente de PHP (au moins PHP 7.4) ainsi que MySQL/MariaDB.

Ensuite, il vous faut comprendre la structure de base des plugins WordPress. Le fichier le plus essentiel d’un plugin est un fichier PHP principal. Le nom de ce fichier ainsi que le nom du dossier dans lequel il est situé peuvent être personnalisés, mais ils doivent contenir une annotation spécifique appelée « header de plugin », qui permet à WordPress de reconnaître votre plugin. Vous pouvez trouver ces fichiers dans le répertoire d’installation de WordPress. wp-content/plugins Créez un nouveau dossier à l’intérieur du dossier existant, par exemple… my-first-plugin

Dans ce dossier, créez votre fichier de plugin principal, par exemple en le nommant « main-plugin.php ». my-first-plugin.phpLe début de ce fichier doit contenir des commentaires informatifs standard concernant le plugin.

Lectures recommandées Guide de début pour le développement d’extensions WordPress : Créez votre première fonctionnalité personnalisée à partir de zéro

Créez votre premier fichier de plugin.

Maintenant, allons créer la structure de base de notre plugin. Dans le répertoire de votre plugin, ouvrez le fichier PHP principal et inscrivez les informations de tête standard pour un plugin.

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.
<?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 est essentielle pour que WordPress puisse reconnaître les plugins. En effet, elle contient des informations cruciales permettant à WordPress de déterminer la fonctionnalité de chaque plugin et de l’intégrer correctement dans le système.Plugin Name Cela est obligatoire ; les autres options sont facultatives. Après avoir enregistré le fichier, vous pourrez voir ce nouvel plugin sur la page “ Plugins ” du panneau de contrôle de WordPress et l’activer. Pour l’instant, il ne dispose d’aucune fonctionnalité.

Ajouter une fonction simple à un plugin.

Une fonctionnalité très simple consiste à ajouter un menu de gestion personnalisé dans l’interface d administration du site web. Nous allons l’utiliser pour… add_action La fonction est montée sur admin_menu C'est sur ce crochet d'action.

Dans le fichier principal du plugin, après la section des commentaires, ajoutez le code suivant :

// 在管理菜单中添加一个顶级菜单
function mfp_add_admin_menu() {
    add_menu_page(
        '我的第一个插件设置', // 页面标题
        '我的插件',           // 菜单标题
        'manage_options',     // 权限要求
        'my-first-plugin',    // 菜单 slug
        'mfp_settings_page',  // 回调函数,用于输出页面内容
        'dashicons-admin-generic', // 图标(可选)
        6                     // 菜单位置(可选)
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 定义设置页面的回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>&lt;?php echo esc_html(get_admin_page_title()) ; ? &lt;?php echo esc_html(get_admin_page_title() ; ?</h1>
        <p>Bienvenue sur la page de configuration de mon premier plugin !</p>
        <form method="post" action="/fr/options.php/" data-trp-original-action="options.php">
            <?php
            // 后续可以在这里添加设置字段
            ?>
            <p class="submit">
                <input type="submit" name="submit" id="submit" class="button button-primary" value="Enregistrer les modifications.">
            </p>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Ce code crée un nouveau menu principal intitulé “ Mes plugins ”. En cliquant sur ce menu, on accède à une page de paramétrage simple. add_menu_page Une fonction a été utilisée pour enregistrer le menu, et une fonction de rappel (callback) a également été définie. mfp_settings_page Cela permet de rendre le contenu de la page visible à l'utilisateur.

Lectures recommandées Guide d’introduction au développement de plugins WordPress : Créez votre premier plugin fonctionnel, de zéro à un.

Utiliser des crochets et des filtres pour étendre les fonctionnalités.

La force fondamentale de WordPress réside dans son architecture de plugins, qui est principalement mise en œuvre grâce aux hooks d’actions et aux hooks de filtres. Les hooks d’actions vous permettent d’exécuter du code personnalisé à des moments précis, tandis que les hooks de filtres vous permettent de modifier des données.

Utiliser des crochets d’action pour ajouter des notes de bas de page

Supposons que nous voulions ajouter automatiquement un texte personnalisé à la fin de tous les articles sur un site web. Cela peut être réalisé en le « montant » (en l’intégrant) dans le code du site. the_content Cela est réalisé grâce à ce hook de filtre. Notez que, bien que le nom soit “ filtre ”,… the_content Utilisé habituellement pour modifier le contenu affiché dans les articles.

// 在文章内容末尾添加自定义文本
function mfp_append_text_to_content($content) {
    // 确保只在主循环的单篇文章页面添加
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        $custom_text = '<p><em>Cet article vous est présenté par “ Mon premier plugin ”.</em></p>'fonction mfp_append_text_to_content() : Cette fonction ajoute du texte personnalisé au contenu de la page. Elle prend en entrée le contenu de la page et retourne le contenu modifié.  

add_filter('the_content', 'mfp_append_text_to_content');  

```

```python
def mfp_append_text_to_content(content):  
    if content is not None:  
        custom_text = mfp_get_custom_text()  
        if custom_text is not None:  
            content +=custom_text  
    return content  
```;

Cette fonction mfp_append_text_to_content Recevoir le contenu original de l’article. $contentAprès avoir vérifié les conditions contextuelles (pour s’assurer qu’il s’agit bien de la page d’un article individuel), on ajoute un texte personnalisé à la fin du contenu, puis on retourne le contenu modifié. add_filter Enregistrez-le. the_content Crochet.

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%.

Créer des options de plugins configurables

Un plugin pratique nécessite généralement quelques options qui peuvent être configurées par l’utilisateur. WordPress propose une API de configuration pour gérer et traiter ces options de manière sécurisée. Nous allons ajouter un champ de texte simple à la page de configuration existante.

Tout d’abord, nous devons enregistrer une nouvelle configuration et l’ajouter à la page de menu existante.

// 初始化插件设置
function mfp_settings_init() {
    // 注册一个新的设置到 “reading” 组(或自定义组)
    register_setting('mfp_plugin_settings', 'mfp_custom_message');

// 在现有页面内添加一个设置区域
    add_settings_section(
        'mfp_section_id',
        '自定义消息设置',
        'mfp_section_callback',
        'my-first-plugin'
    );

// 向该区域添加一个字段
    add_settings_field(
        'mfp_field_id',
        '页脚消息',
        'mfp_field_callback',
        'my-first-plugin',
        'mfp_section_id'
    );
}
add_action('admin_init', 'mfp_settings_init');

// 区域描述回调函数
function mfp_section_callback() {
    echo '<p>Ici, vous pouvez configurer le message affiché par le plugin à la fin de l’article.</p>';
}

// 字段输出回调函数
function mfp_field_callback() {
    // 从数据库中获取已保存的选项值
    $message = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
    echo '<input type="text" name="mfp_custom_message" value="' . esc_attr($message) . '" class="regular-text">'echo '<p class="description">Entrez le message que vous souhaitez afficher à la fin de chaque article.</p>';
}

Ensuite, il est nécessaire de modifier ce qui a été défini précédemment. mfp_settings_page Fonction pour afficher les champs définis dans un formulaire.

Lectures recommandées De la prise en main à la maîtrise complète : Guide complet et tutoriel pratique sur le développement de plugins pour WordPress

// 更新后的设置页面回调函数
function mfp_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1>&lt;?php echo esc_html(get_admin_page_title()) ; ? &lt;?php echo esc_html(get_admin_page_title() ; ?</h1>
        <form method="post" action="/fr/options.php/" data-trp-original-action="options.php">
            <?php
            // 输出设置字段、安全随机数和设置组
            settings_fields('mfp_plugin_settings');
            do_settings_sections('my-first-plugin');
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Enfin, mettez à jour la fonction qui ajoute du texte auparavant, afin qu’elle utilise des options configurables.

function mfp_append_text_to_content($content) {
    if (is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query()) {
        // 从选项中获取自定义消息,如果不存在则使用默认值
        $custom_text = get_option('mfp_custom_message', '本文由“我的第一个插件”为您呈现。');
        if (!empty($custom_text)) {
            $content .= '<p><em>'. wp_kses_post($custom_text)'.'</em></p>';
        }
    }
    return $content;
}

Internationalisation des plugins et préparation à leur publication

Pour que les plugins puissent être utilisés par des utilisateurs du monde entier, l’internationnalisation est une étape essentielle. Cela implique l’utilisation de champs de texte et de fonctions de traduction pour encapsuler toutes les chaînes de caractères visibles par les utilisateurs.

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.

Utilisez la fonction de traduction pour encapsuler le texte.

Vous devez traduire toutes les chaînes de caractères affichées dans le plug-in (comme par exemple <). echo Le texte retourné par la fonction `or` doit être encapsulé dans une fonction de traduction spécifique. La plus couramment utilisée est… () Utilisé pour traduire et retourner des chaînes de caractères, ainsi que… esc_html__() Utilisé pour traduire et échapper les caractères HTML.

Modifiez l'exemple de code précédent :

// 在管理菜单中添加一个顶级菜单(国际化版本)
function mfp_add_admin_menu() {
    add_menu_page(
        __('我的第一个插件设置', 'my-first-plugin'), // 页面标题
        __('我的插件', 'my-first-plugin'),           // 菜单标题
        'manage_options',
        'my-first-plugin',
        'mfp_settings_page',
        'dashicons-admin-generic',
        6
    );
}
add_action('admin_menu', 'mfp_add_admin_menu');

// 区域描述回调函数(国际化版本)
function mfp_section_callback() {
    echo '<p>' . esc_html__('在这里配置插件在文章末尾显示的消息。', 'my-first-plugin') . '</p>';
}

En même temps, il est nécessaire de charger le champ de texte. Après la section des commentaires du fichier principal du plugin, ajoutez le code pour charger le fichier de traduction :

// 加载插件文本域
function mfp_load_textdomain() {
    load_plugin_textdomain('my-first-plugin', false, dirname(plugin_basename(__FILE__)) . '/languages/');
}
add_action('plugins_loaded', 'mfp_load_textdomain');

Préparation du paquet compressé du plugin.

Avant de publier ou de partager un plugin, vous devez créer un paquet de publication propre. Assurez-vous que le répertoire de votre plugin contient tous les fichiers nécessaires, et excluez les fichiers inutiles ou indésirables. .git Des dossiers, des fichiers de journalisation, des fichiers de configuration d’IDE, ou d’autres éléments non pertinents. En général, un paquet de publication de plugin minimal devrait contenir :
1. Fichier PHP du plugin principal.
2. Un élément optionnel. readme.txt Ce fichier respecte les normes de formatage de WordPress.org et est conçu pour être affiché dans le répertoire des plugins.
3. Un fichier contenant les traductions. /languages Le dossier (si celui-ci existe).
4. D’autres dossiers contenant des ressources JavaScript, CSS ou images nécessaires.

Comprimez tout le dossier du plugin en un fichier ZIP. Ce fichier pourra ensuite être installé à l’aide de la fonction “ Télécharger un plugin ” dans l’administration de WordPress, ou bien soumis au répertoire officiel des plugins de WordPress.

résumés

À travers ce guide, nous avons suivi le processus essentiel du développement de plugins pour WordPress : de la préparation de l’environnement, à la création du fichier principal contenant l’en-tête standard du plugin, en passant par l’ajout de fonctionnalités à l’aide d’actions et de hooks, jusqu’à la création de pages d’options configurables via l’API de paramétrage. Nous avons également abordé les bases de l’internationalisation. Tout cela vous a fourni une base solide pour développer des plugins plus complexes et plus pratiques. N’oubliez pas que une bonne structure du code, le respect des normes de codage de WordPress et une compréhension approfondie de son système de hooks sont des clés pour devenir un développeur de plugins de qualité.

FAQ Foire aux questions

Quelles connaissances de programmation sont nécessaires pour développer des plugins pour WordPress ?

Vous devez posséder des connaissances de base en programmation PHP, car le noyau de WordPress ainsi que la plupart de ses plugins sont écrits en PHP. Une compréhension de base des langages HTML, CSS et JavaScript sera également très utile, surtout lorsque vous aurez besoin de personnaliser les interfaces de gestion ou les interactions utilisateur. Il est également essentiel de maîtriser les concepts fondamentaux de WordPress, tels que les articles, les pages, les catégories et les « hooks ».

Quel doit être le nom du fichier principal du plugin ?

Aucune exigence obligatoire n’est imposée. Le fichier principal peut porter n’importe quel nom de fichier PHP valide, mais il est généralement conseillé d’utiliser un nom qui correspond au nom du répertoire contenant le plugin. Par exemple, si le répertoire s’appelle… my-super-pluginDans ce cas, le fichier principal peut être nommé… my-super-plugin.phpL’essentiel réside dans les commentaires relatifs aux plugins situés en haut du fichier. WordPress se base sur ces informations contenues dans les commentaires pour fonctionner correctement. Plugin Name: Pour identifier les plugins.

Comment déboguer le code de mon plug-in ?

Il existe plusieurs méthodes pour déboguer des plugins. Tout d’abord, assurez-vous que… wp-config.php Activer le mode de débogage de WordPress dans le fichier… WP_DEBUG La constante est définie à trueCela affichera les erreurs, les avertissements et les notifications PHP sur la page. De plus, il est possible d’utiliser… error_log() La fonction écrit les informations de débogage dans le journal d'erreurs du serveur, ou utilise des outils de débogage plus avancés tels que le plugin Query Monitor, qui peut fournir des détails sur les requêtes de base de données, les hooks, les erreurs PHP, etc.

Comment puis-je publier le plugin que j’ai développé dans le catalogue officiel de WordPress ?

Pour publier votre plugin dans le catalogue officiel de plugins de WordPress.org, vous devez d’abord vous inscrire sur WordPress.org, puis soumettre votre plugin à l’examen des équipes de développement de WordPress. Le code de votre plugin doit respecter la licence GNU GPL et contenir un fichier de description („readme“) bien formaté. readme.txt Le fichier sera examiné par l’équipe de révision, qui vérifiera la qualité du code, sa sécurité ainsi que sa conformité aux directives de structure du répertoire. Une fois l’examen réussi, vous obtiendrez un répertoire SVN permettant de gérer et de mettre à jour les versions de votre plugin.