Guide de développement de plugins WordPress : Créez vos propres fonctionnalités, de zéro à un.

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

Concepts clés et préparatifs

Le développement de plugins pour WordPress consiste à écrire des modules de code PHP indépendants qui viennent compléter les fonctionnalités de base de WordPress afin d'en étendre et d'en améliorer les capacités. Comprendre son fonctionnement est la première étape vers le succès. WordPress utilise un modèle de programmation basé sur des événements (des « hooks » et des filtres) ainsi que des principes de programmation orientée objet. Un plugin est essentiellement un ou plusieurs fichiers PHP qui interagissent avec le noyau de WordPress via des interfaces prédéfinies, permettant ainsi d'ajouter de nouvelles fonctionnalités de manière sûre.

Avant le développement, vous aurez besoin d’un environnement de serveur local stable ou de serveur de test. Il est fortement conseillé d’installer des logiciels de serveur local tels que XAMPP, Local by Flywheel ou DevKinsta. Assurez-vous également de disposer d’un éditeur de code (comme VS Code ou PhpStorm) et d’avoir activé le mode de débogage de WordPress. Cela est nécessaire pour…wp-config.phpDes constantes sont définies dans le fichier :

define( ‘WP_DEBUG’, true );
define( ‘WP_DEBUG_LOG’, true );
define( ‘WP_DEBUG_DISPLAY’, false );

ActiverWP_DEBUG_LOGPar la suite, les informations d'erreur seront enregistrées./wp-content/debug.logDans ce fichier, cela est essentiel pour diagnostiquer les problèmes.

Lectures recommandées Guide avancé pour le développement de thèmes WordPress : Un tutoriel pratique de l'initiation à la maîtrise

Créez votre premier plugin.

Créez un plugin, en commençant par…/wp-content/plugins/Créez un dossier exclusif dans le répertoire. Par exemple…my-first-pluginDans ce dossier, vous devez créer un fichier PHP principal dont le nom correspond généralement au nom du dossier, par exemple…my-first-plugin.php

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.

Écrire les informations d'en-tête du plug-in.

Chaque plugin WordPress doit comporter une annotation de type “ en-tête de plugin ” conforme à un format standard. Celle-ci sert d’« identifiant » pour que WordPress puisse reconnaître le plugin. Elle doit être placée en début du fichier principal du plugin, et respecter un format bien défini.Plugin NameD’autres informations telles que la description, la version et l’auteur sont également très importantes.

<?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 permettra à votre plugin d’apparaître dans la liste des plugins du panneau de contrôle de WordPress, et affichera les informations mentionnées ci-dessus.Text DomainetDomain PathCeci est prévu pour l’internationalisation des plugins.

Réaliser une fonctionnalité de base.

Maintenant, ajoutons une fonction simple à ce plugin : l’affichage automatique d’un texte personnalisé en bas du contenu de l’article. Cela nécessite l’utilisation des “ filtres ” (Filters) de WordPress. Les filtres vous permettent de modifier les données avant qu’elles ne soient enregistrées dans la base de données ou affichées dans le navigateur.

Nous allons utiliser…the_contentCe filtre : dans votre fichier de plugin principal, après les commentaires d’en-tête, ajoutez le code suivant :

Lectures recommandées Le tutoriel ultime pour le développement de plugins WordPress : construisez votre premier plugin de A à Z.

// 在文章内容末尾添加自定义文本
function myfp_add_text_to_content( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = ‘<p><em>Merci de lire cet article ! Il est soutenu par “ Mon premier plugin ”.</em></p>’;
        $content .= $custom_text;
    }
    return $content;
}
add_filter( ‘the_content’, ‘myfp_add_text_to_content’ );

Après avoir enregistré le fichier, accédez à l’administration de WordPress pour activer ce plugin. Lorsque vous consultez un article individuel, vous verrez le texte ajouté à la fin de son contenu.myfp_add_text_to_contentIl s’agit d’une fonction que nous avons définie ; elle reçoit le contenu de l’article en entrée.$contentAjoutez un texte supplémentaire lorsque les conditions sont remplies (qu’il s’agit d’un seul article et que l’on se trouve dans la boucle principale), puis retournez le contenu modifié.add_filter()La fonction monte cette fonction personnalisée.the_contentSur le filtre.

Construire des interactions à l’aide de crochets et de filtres

La force des plugins WordPress réside dans leur riche système de hooks, qui se divise en hooks d’action (Action Hooks) et en hooks de filtre (Filter Hooks). Les hooks d’action vous permettent d’exécuter du code à des moments précis, tandis que les hooks de filtre vous permettent de modifier des données.

Utiliser des crochets d’action pour ajouter un menu de gestion

Supposons que nous voulions ajouter une page de paramétrage pour un plugin, ce qui nécessiterait l’utilisation de crochets d’action (action hooks).admin_menuIl est déclenché lors de la création du menu d'administration en arrière-plan de WordPress.

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 myfp_add_admin_menu() {
    add_menu_page(
        ‘我的插件设置’,           // 页面标题
        ‘我的插件’,               // 菜单标题
        ‘manage_options’,       // 权限要求
        ‘myfp-settings’,        // 菜单slug
        ‘myfp_settings_page’,   // 用于显示页面内容的回调函数
        ‘dashicons-admin-generic’, // 图标(可选)
        80                      // 菜单位置
    );
}
add_action( ‘admin_menu’, ‘myfp_add_admin_menu’ );

// 定义设置页面的显示内容
function myfp_settings_page() {
    ?&gt;
    <div class="“wrap”">
        <h1><?php esc_html_e( ‘我的插件设置’, ‘my-first-plugin’ ); ?></h1>
        <p><?php esc_html_e( ‘这是你的第一个插件设置页面。’, ‘my-first-plugin’ ); ?></p>
        <form method="“post”" action="/fr/“options.php”/" data-trp-original-action="“options.php”">
            <?php
            // 后续可以在这里添加设置字段
            settings_fields( ‘myfp_settings_group’ );
            do_settings_sections( ‘myfp-settings’ );
            submit_button();
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Une fois l’extension activée, vous verrez un nouvel élément de menu intitulé “ Mes extensions ” sur le côté gauche de l’interface. En cliquant dessus, vous accéderez à la page de configuration personnalisée.add_menu_pageLes fonctions sont essentielles ; elles ont permis de régister une page de menu de niveau supérieur.

Créer des codes courts pour améliorer les fonctionnalités de la page.

Les codes courts (shortcodes) sont des outils puissants qui permettent aux utilisateurs d’accéder facilement aux fonctionnalités des plugins dans leurs articles ou sur leurs pages. Vous pouvez les utiliser pour…add_shortcode()Utilisez une fonction pour enregistrer un code court.

// 创建一个显示当前时间的短代码
function myfp_current_time_shortcode( $atts ) {
    // 使用 shortcode_atts 设置默认属性并合并用户输入
    $attributes = shortcode_atts( array(
        ‘format’ =&gt; ‘Y-m-d H:i:s’,
    ), $atts );

// 根据属性格式化当前时间
    $current_time = date( $attributes[‘format’] );

// 返回要显示的内容,确保进行转义
    return ‘<p>L’heure actuelle est : ’. esc_html( $current_time )‘.‘</p>’php
add_shortcode( ‘show_time’, ‘myfp_current_time_shortcode’ );

Maintenant, les utilisateurs peuvent saisir des textes dans l’éditeur d’articles.[show_time format=“F j, Y”]Affiche la date actuelle formatée. Utilisé par les processeurs de codes courts.myfp_current_time_shortcodeRecevez un tableau d’attributs et retournez le contenu HTML à insérer dans la page.

Lectures recommandées Du niveau débutant au niveau expert, le développement de plugins WordPress : un guide complet pour créer un site web personnalisé.

Sécurité des plugins et bonnes pratiques

Lors du développement de plugins, la sécurité est un facteur primordial à prendre en compte. Un code non sécurisé peut exposer le site web à des attaques. Il est essentiel de suivre les meilleures pratiques recommandées.

Validation, échappement et nettoyage des données

Tous les données provenant des utilisateurs ou de sources externes (comme…)$_GET$_POST$_COOKIETout cela est considéré comme peu fiable. Avant de les utiliser pour des requêtes de base de données ou de les afficher dans un navigateur, il est nécessaire de les traiter.

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.
  • Lors de l'affichage dans un navigateur, il est nécessaire d'utiliser des fonctions d'échappement pour garantir que les données soient présentées sous forme de texte pur et éviter ainsi les attaques XSS (Cross-Site Scripting). WordPress propose différentes fonctions d'échappement en fonction du contexte.esc_html()(À utiliser à l'intérieur des éléments HTML)esc_attr()(À utiliser à l'intérieur des attributs HTML)esc_url()(Dédié aux URL) etwp_kses_post()(Les balises HTML sûres sont autorisées à être utilisées.)
  • Lors de l’interaction avec une base de données, utilisez des instructions préparées : il est absolument interdit de concaténer directement des variables dans une requête SQL. Il faut plutôt utiliser des techniques permettant de générer dynamiquement les parties de la requête en fonction des données disponibles.$wpdb->prepare()Des méthodes ou des API plus avancées, comme…WP_QueryPar exemple :
global $wpdb;
$user_id = 123;
$safe_query = $wpdb->prepare( “SELECT * FROM {$wpdb->prefix}posts WHERE post_author = %d”, $user_id );
$results = $wpdb->get_results( $safe_query );

Ici%dC’est un placeholder.$wpdb->prepare()Ce sera traité de manière sûre.$user_idVariable.

Réaliser la configuration des options et la sécurité

Lorsque vous ajoutez des options de configuration à un plugin, vous devez utiliser l’API des Paramètres de WordPress (WordPress Settings API). Celle-ci gère automatiquement la vérification des données (Nonce), les contrôles d’accès ainsi que l’enregistrement des modifications, ce qui simplifie considérablement le processus de sécurité.

Tout d'abord, utilisezregister_setting()Créez un groupe d'options de configuration, puis utilisez-le.add_settings_section()etadd_settings_field()Ajoutez des champs. Dans la fonction de rappel du menu de gestion créée précédemment…myfp_settings_pageCelui qui est appelé en interne.settings_fields( ‘myfp_settings_group’ )etdo_settings_sections( ‘myfp-settings’ )Tous les champs de sécurité nécessaires ainsi que la zone de configuration de l’enregistrement seront affichés. C’est beaucoup plus pratique que de gérer tout cela manuellement.$_POSTLes données doivent être beaucoup plus sûres et fiables.

résumés

Vous avez suivi les étapes clés du développement de plugins : depuis la rédaction de commentaires simples dans le fichier de tête du plugin, jusqu’à l’utilisation des actions et des hooks pour interagir avec le noyau de WordPress, en passant par la création de codes courts (shortcodes) et la gestion des pages associées au plugin. N’oubliez jamais que la sécurité est de la plus haute importance. Assurez une vérification stricte des données, effectuez leur échappement (escaping) et leur nettoyage, et faites pleinement appel aux outils de sécurité fournis par WordPress, tels que l’API Settings. Le développement de plugins est un processus d’apprentissage continu ; en lisant le code source du noyau de WordPress, en consultant les manuels officiels et en participant à la communauté, vous pourrez créer des plugins performants, sûrs et populaires.

FAQ Foire aux questions

Est-il nécessaire de maîtriser PHP pour développer des plugins ?

Oui, une solide base en PHP est nécessaire, car WordPress est lui-même écrit en PHP. Vous devez comprendre les concepts de syntaxe PHP, de fonctions, de classes, d’espace de noms, etc. De plus, une connaissance de base en HTML, CSS et JavaScript sera également très utile pour le développement des fonctionnalités du côté client (front-end).

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

La méthode la plus efficace est d’activer celle qui a été mentionnée précédemment.WP_DEBUGWP_DEBUG_LOGetWP_DEBUG_DISPLAYDe plus, il est possible d’utiliser…error_log()La fonction écrit des informations de débogage personnalisées dans le journal, ou utilise des outils de débogage professionnels tels que Xdebug en conjonction avec votre éditeur de code pour effectuer un débogage ligne par ligne.

Comment devrais-je ajouter des traductions linguistiques à mon plugin ?

Tout d’abord, il faut configurer correctement les commentaires en tête du plugin.Text Domain(comme ‘my-first-plugin’) etDomain PathPar exemple, `/languages`. Ensuite, dans tout le code, à l’endroit où des chaînes de caractères doivent être traduites, utilisez une approche similaire.__( ‘Hello World’, ‘my-first-plugin’ )Ouesc_html_e( ‘Settings’, ‘my-first-plugin’ )La fonction de traduction. Enfin, utiliser des outils tels que Poedit pour générer le résultat..potFichiers de modèle, permettant ainsi de créer des versions en différentes langues..poet.moTransférer le fichier et le placer à l’endroit spécifié./languagesDans le répertoire.

Comment publier un plugin développé dans le catalogue officiel de WordPress ?

Vous devez accéder à la page de soumission du catalogue de plugins officiel de WordPress. Avant de soumettre votre plugin, assurez-vous que le code respecte les normes de codage de WordPress, qu’il est accompagné d’une documentation complète et de commentaires explicites, et qu’il ne contient aucune référence à des bibliothèques commerciales de tiers qui pourraient poser des problèmes de droits d’auteur. Après la soumission, un processus d’approbation sera mis en œuvre. Une fois votre plugin approuvé, il pourra être recherché et installé par des utilisateurs du monde entier.