Développement de plugins WordPress : créer des modules de fonctionnalités personnalisées de A à Z.

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

Comprendre la structure de base des plugins WordPress

Avant de plonger dans le code, il est essentiel de comprendre les éléments de base d’un plugin WordPress. Un plugin est essentiellement un ou un ensemble de fichiers placés dans le répertoire des plugins de WordPress.wp-content/plugins/Les fichiers PHP se trouvent dans le répertoire correspondant. Le cœur de ce système est un fichier principal qui contient les métadonnées de l’extension, et ces informations sont indiquées à WordPress grâce à des blocs de commentaires dans un format spécifique.

Le fichier d’entrée principal du plugin, par exemple celui que nous avons nommé…my-first-plugin.phpUn plugin WordPress doit obligatoirement contenir une certaine annotation en tête du fichier. Cette section d’annotations définit le nom du plugin, sa description, sa version, son auteur, etc., et constitue la seule information permettant à WordPress de reconnaître et d’installer le plugin. Un plugin très basique peut être composé uniquement de ce fichier. Il peut modifier ou étendre les fonctionnalités du site en utilisant les API fournies par WordPress, telles que les hooks d’action (Action Hooks) et les hooks de filtre (Filter Hooks).

Les fonctionnalités des plugins peuvent être très simples – par exemple, ajouter une ligne de texte en bas de la page – ou extrêmement complexes, comme créer un système d’e-commerce complet. Quelle que soit leur complexité, leur développement suit le même modèle de base : d’abord, créer la bonne structure de fichiers à l’endroit approprié ; ensuite, écrire le code et l’intégrer dans le cycle de vie de WordPress ; enfin, effectuer les configurations nécessaires et interagir via l’interface d’administration de WordPress.

Lectures recommandées Guide de début pour le développement de plugins WordPress : Créez votre premier plugin à partir de zéro

Créez votre premier plugin.

Examinons ensemble un exemple classique, le “Hello World”, pour mettre en pratique la création du plugin le plus simple possible. La fonction de ce plugin est d'afficher une salutation en haut du contenu des articles sur chaque page du site.

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.

Tout d’abord, vous devez le mettre en place localement ou sur le serveur.wp-content/plugins/Créez un nouveau dossier dans le répertoire et nommez-le…my-hello-pluginEnsuite, créez un fichier PHP principal dans ce dossier. Nous allons l’appeler…my-hello-plugin.php

Écrire le fichier principal du plug-in.

Ouvrezmy-hello-plugin.phpFaites glisser le fichier dans le répertoire approprié de votre site WordPress, puis entrez le code suivant. Ce code respecte le format standard des plugins WordPress et contient une tête d’information sur le plugin ainsi que le code permettant de réaliser ses fonctionnalités.

<?php
/**
 * Plugin Name:       我的问候插件
 * Plugin URI:        https://yourwebsite.com/my-hello-plugin
 * Description:       这是一个简单的插件,用于在文章内容前输出“您好,读者!”。
 * Version:           1.0.0
 * Author:            你的名字
 * License:           GPL v2 or later
 * Text Domain:       my-hello-plugin
 */

// 防止直接访问文件
if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

/**
 * 在主文章内容前添加问候语。
 *
 * @param string $content 原始的文章内容。
 * @return string 添加了问候语后的新内容。
 */
function my_hello_add_greeting( $content ) {
    $greeting = &#039;<p style="background-color:#f0f8ff; padding:10px; border-left:4px solid #0073aa;"><strong>Bonjour, lecteur ! Bienvenue à la lecture de cet article.</strong></p>';
    // 只在主循环且是文章页面时添加
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}
// 将函数挂载到 ‘the_content’ 过滤器
add_filter( 'the_content', 'my_hello_add_greeting' );

Activer et tester le plugin.

Upload le dossier contenant ce fichier sur le serveur.wp-content/plugins/Le fichier du plugin doit être placé dans le répertoire approprié du site web, ou, si vous développez localement, directement dans la bonne directory. Ensuite, connectez-vous à l’administration de WordPress et allez au menu “ Plugins ”. Vous devriez voir le plugin “ Mon Greeting Plugin ” dans la liste des plugins. Cliquez sur le bouton “ Activer ”.

Une fois l’extension activée, lorsque vous consultez n’importe quel article ou page du site, vous verrez un message de bienvenue affiché avant le début du contenu principal de l’article. Ce message présente un fond bleu clair et un bordure sur le côté gauche. Ce processus illustre clairement les étapes essentielles du développement d’extensions pour WordPress : la création de fichiers, l’ajout de fonctionnalités à l’aide de « hooks » (des mécanismes préétablis), et l’activation de l’extension en arrière-plan. Vous venez de faire vos premiers pas avec succès dans le développement d’extensions pour WordPress.

Lectures recommandées Développement de plugins WordPress : de zéro à un, créer des extensions de site Web puissantes.

Étendre les fonctionnalités en utilisant des crochets et des filtres

La flexibilité et l’extensibilité de WordPress sont en grande partie dues à son système de “ hooks ” (crochets). Les hooks se divisent en deux catégories : les hooks d’actions (Actions) et les hooks de filtres (Filters). Comprendre et utiliser ces hooks avec maîtrise est essentiel pour le développement avancé de plugins.

Les « action hooks » vous permettent d’insérer et d’exécuter votre propre code à des moments précis pendant le fonctionnement de WordPress (par exemple, lors de la publication d’un article ou de la chargement d’une page).save_postL’action est déclenchée lorsque l’article ou la page est enregistrée dans la base de données. Vous pouvez le faire en…add_action()La fonction permet de “ monter ” (d’associer) votre fonction personnalisée à ce crochet (ou point de contrôle).

Les hooks de filtre vous permettent de modifier les données générées par WordPress lors du traitement des contenus. Vous enregistrez une fonction dans un filtre ; lorsque WordPress exécute ce filtre, il transmet les données à toutes les fonctions enregistrées et reçoit les valeurs retournées par celles-ci après traitement. C’est ce qui a été utilisé dans l’exemple ci-dessus.the_contentIl s’agit d’un exemple typique de « hook » de filtre qui vous permet de modifier le contenu de l’article qui est sur le point d’être affiché.

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 une option de gestion simple.

Un plugin vraiment utile nécessite généralement quelques options configurables par l’utilisateur. Cela implique une interaction avec l’administration de WordPress. Nous allons démontrer comment ajouter une page de paramètres personnalisés à travers un exemple simple.

Tout d'abord, nous utilisons leadd_action(‘admin_menu’, …)Créez une fonction qui permettra d'ajouter un nouvel élément de menu dans l'administration.

/**
 * 在WordPress后台添加一个自定义菜单页面。
 */
function my_hello_add_admin_menu() {
    add_menu_page(
        ‘问候插件设置’, // 页面标题
        ‘问候插件’,     // 菜单标题
        ‘manage_options’, // 所需权限
        ‘my-hello-plugin’, // 菜单slug
        ‘my_hello_admin_page_html’, // 用于显示页面内容的回调函数
        ‘dashicons-format-chat’, // 图标(可选)
        80 // 菜单位置(可选)
    );
}
add_action( ‘admin_menu‘, ’my_hello_add_admin_menu’ );

/**
 * 自定义设置页面的HTML输出。
 */
function my_hello_admin_page_html() {
    // 检查用户权限
    if ( ! current_user_can( ‘manage_options’ ) ) {
        return;
    }
    ?&gt;
    <div class="“wrap”">
        <h1></h1>
        <form action="/fr/“options.php”/" method="“post”" data-trp-original-action="“options.php”">
            <?php
            // 输出设置字段、安全性和保存更改按钮
            settings_fields( ‘my_hello_options’ );
            do_settings_sections( ‘my-hello-plugin’ );
            submit_button( ‘保存问候语设置’ );
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Champs de configuration pour l’enregistrement et l’affichage des données.

Seulement disposer d'une page ne suffit pas ; nous devons également créer des options qui peuvent être enregistrées. Cela nécessite l’utilisation de…add_action(‘admin_init’, …)… ainsi queregister_setting()add_settings_section()etadd_settings_field()Une série de fonctions…

Lectures recommandées De l’initiation à la maîtrise : Guide complet sur le développement de plugins pour WordPress

/**
 * 初始化插件的设置。
 */
function my_hello_settings_init() {
    // 注册一个设置项到数据库的‘my_hello_options’键下
    register_setting( ‘my_hello_options‘, ’my_hello_greeting_text’ );

// 在页面中添加一个设置区域
    add_settings_section(
        ‘my_hello_section’, // 区域ID
        ‘问候语设置’,        // 区域标题
        ‘my_hello_section_html’, // 区域描述的回调函数
        ‘my-hello-plugin’ // 所属页面slug
    );

// 在区域内添加一个具体的设置字段
    add_settings_field(
        ‘my_hello_field’, // 字段ID
        ‘自定义问候语’,    // 字段标签
        ‘my_hello_field_html’, // 用于渲染字段HTML的回调函数
        ‘my-hello-plugin’, // 所属页面slug
        ‘my_hello_section’ // 所属区域ID
    );
}
add_action( ‘admin_init‘, ’my_hello_settings_init’ );

/**
 * 设置区域的描述信息。
 */
function my_hello_section_html() {
    echo ‘<p>Ici, vous pouvez définir le contenu du message de salutation qui sera affiché en début de l’article.</p>’;
}

/**
 * 渲染设置字段的HTML。
 */
function my_hello_field_html() {
    // 从数据库获取已保存的值,如果没有则使用默认值
    $greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    ?&gt;
    <input type="‘text’"
           id="‘my_hello_greeting_text’"
           name="‘my_hello_greeting_text’"
           value="“NO NUMERIC NOISE KEY" 1000”
 class="“regular-text”" />
    <p class="“description”">Veuillez saisir le salut que vous souhaitez afficher en tête du contenu de l’article.</p>
    &lt;?php
}

Nous disposons maintenant d'une page de paramétrage en arrière-plan qui comprend une boîte de saisie. Ensuite, il est nécessaire de modifier les fonctions de fonctionnalité initiales.my_hello_add_greetingLaissez-le lire les salutations à partir des options présentes dans la base de données.

function my_hello_add_greeting( $content ) {
    // 获取保存的自定义问候语,如果不存在则使用默认值
    $custom_greeting = get_option( ‘my_hello_greeting_text‘, ’您好,读者!欢迎阅读本文。’ );
    $greeting = ‘<p style="“background-color:#f0f8ff;" padding:10px; border-left:4px solid #0073aa;”><strong>’ . esc_html( $custom_greeting ) . ‘</strong></p>’;
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        return $greeting . $content;
    }
    return $content;
}

À ce stade, un plugin doté des fonctionnalités de configuration de base est achevé. Les utilisateurs peuvent modifier librement le texte des salutations dans le menu “ Plugin de salutations ” en arrière-plan, et les articles affichés en avant-plan appliqueront automatiquement les dernières modifications.

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.

Meilleures pratiques et sécurité pour le développement d'extensions (plugins)

Développer un plugin WordPress à l’intention d’autres utilisateurs exige non seulement que les fonctionnalités soient complètes, mais aussi que le plugin respecte les meilleures pratiques en matière de sécurité, de performance et de maintenabilité.

Considérations de sécurité

La sécurité est un principe primordial. Ne faites jamais confiance aux données saisies par les utilisateurs. Toutes les informations recueillies auprès des utilisateurs doivent être traitées avec prudence et vérifiées rigoureusement.$_GET$_POST$_COOKIEAvant de les utiliser pour des requêtes de base de données, de les afficher sur une page ou de les manipuler dans des fichiers, il est nécessaire de les nettoyer, de les vérifier et de les échapper correctement.

Pour les données affichées sur une page HTML, il est conseillé d’utiliser…esc_html()esc_attr()Ouwp_kses_post()Il est nécessaire d’utiliser des fonctions de mise en échappement pour les variables utilisées dans les requêtes de base de données.$wpdb->prepare()Pour effectuer des requêtes paramétrées, il est absolument interdit de coller directement des variables dans les instructions SQL. Dans les plugins, il faut toujours utiliser des méthodes appropriées pour gérer les paramètres.defined(‘ABSPATH’) or die;Cela vise à empêcher que les fichiers ne soient directement accessibles.

Organisation du code et internationalisation

À mesure que les fonctionnalités des plugins augmentent, il devient difficile de maintenir tout le code dans un seul fichier principal. La meilleure approche consiste à diviser le code en fonction de ses différentes tâches et à le stocker dans des fichiers distincts. Généralement, le fichier principal est chargé de définir les « hooks » (des mécanismes d’interaction avec le système d’exploitation) et les processus fondamentaux du programme, tandis que les pages de configuration, les fonctions logiciques, les définitions de classes, etc., sont placées dans d’autres fichiers.includes/Ouadmin/public/Dans un tel sous-dossier, et en passant par…require_onceIntroduire.

Pour que votre plugin puisse être utilisé par des utilisateurs du monde entier, il doit prendre en charge l’internationalisation (i18n). Cela signifie que toutes les chaînes de texte affichées dans le plugin doivent utiliser les fonctions de traduction de WordPress.__()_e()Effectuer l'emballage et préparer pour…Text DomainNous avons défini un identifiant unique (par exemple, le nom du répertoire du plugin) dans la section des commentaires en tête du fichier.Text Domain: my-hello-pluginVoici la manière correcte d’utiliser cela dans le code :

$greeting = ‘<p><strong>’ . esc_html__( ‘您好,读者!欢迎阅读本文。’ , ’my-hello-plugin’ ) . ‘</strong></p>’;

Ainsi, les traducteurs pourront l’utiliser..poet.moCe fichier contient les traductions de votre plugin dans différentes langues.

l'optimisation des performances

Les plugins doivent avoir un impact minimal sur la performance du site web. Il est conseillé d’éviter d’effectuer de nombreuses requêtes de base de données ou des calculs complexes à chaque chargement de page, surtout en front-end. Utilisez de manière judicieuse l’API de cache temporaire (Transients API) de WordPress pour stocker les résultats de requêtes qui ne changent pas fréquemment. Par exemple, si vous souhaitez mettre en cache les résultats d’une requête API, vous pouvez procéder comme suit :

$data = get_transient( ‘my_plugin_api_data’ );
if ( false === $data ) {
    // 数据不存在或已过期,从API获取
    $data = wp_remote_retrieve_body( wp_remote_get( ‘https://api.example.com/data’ ) );
    // 将数据存储12小时
    set_transient( ‘my_plugin_api_data’, $data, 12 * HOUR_IN_SECONDS );
}
// 使用 $data

De plus, assurez-vous que vos fichiers CSS et JavaScript ne soient chargés que sur les pages nécessaires. Utilisez des techniques permettant de contrôler ce chargement dynamique.wp_enqueue_script()etwp_enqueue_style()Fonction, accompagnée des hooks appropriés (par exemple…)wp_enqueue_scriptsPour charger les ressources frontales, on utilise… (La phrase est inachevée dans le texte original ; il manque donc des informations pour compléter la traduction.)admin_enqueue_scriptsCrochet.

résumés

Grâce à la progression guidée de cet article, nous avons réalisé le voyage complet du développement d’un simple plugin “Hello World” à un plugin pratique doté d’options de configuration en arrière-plan et respectant les principes de base de la sécurité et de l’organisation du code. L’essentiel réside dans la compréhension et l’utilisation du mécanisme central de WordPress : le système de hooks. Celui-ci nous permet d’élargir les fonctionnalités de la plateforme de manière modulaire et non intrusive. Que ce soit pour modifier le contenu (filtres) ou pour exécuter des tâches spécifiques (actions), les hooks servent de pont entre votre code et le monde de WordPress.

N’oubliez pas que le développement de plugins de qualité ne se limite pas simplement à faire fonctionner les différentes fonctionnalités. Il implique également un traitement strict et sécurisé des données saisies par les utilisateurs, une organisation claire du code, un soutien à l’internationalisation, ainsi qu’une réflexion approfondie sur les performances du site web. Chaque étape – depuis la définition des en-têtes des fichiers de plugin jusqu’à la création de menus et de paramètres à l’aide d’API standard, en passant par l’encodage sécurisé des données affichées – a un impact sur la qualité, la sécurité et l’expérience utilisateur du plugin. En continuant à explorer les nombreuses API et fonctions de WordPress, vous serez en mesure de créer des plugins puissants et fiables.

FAQ Foire aux questions

Quelles sont les bases nécessaires pour le développement d’extensions (plugins) ?

Vous devez posséder des connaissances de base en programmation PHP, y compris les concepts clés tels que les variables, les fonctions, les arrays, les tests conditionnels et les boucles. Une compréhension de base d’HTML et de CSS est également utile, car les plugins nécessitent souvent la création ou la modification d’interfaces utilisateur. Une connaissance des fonctionnalités de base de WordPress ainsi que de sa structure administrative facilitera le processus de développement.

Comment déboguer mon plugin WordPress ?

Tout d’abord, assurez-vous que…wp-config.phpLe mode de débogage de WordPress est activé dans ce fichier. Cela a été configuré via des paramètres spécifiques.define('WP_DEBUG', true);etdefine('WP_DEBUG_LOG', true);Les informations d'erreur seront enregistrées.wp-content/debug.logCela est plus sûr que de l'afficher directement sur la page. De plus, il est possible de l'utiliser en combinaison avec d'autres éléments.error_log()La fonction affiche la valeur de la variable, ou vous pouvez utiliser les panneaux “ Réseau ” et “ Console ” des outils de développement du navigateur pour vérifier les problèmes liés aux scripts et aux styles du côté client.

Le plugin que j’ai développé peut-il être téléchargé depuis le catalogue officiel des plugins ?

Oui, mais cela nécessite de respecter les exigences officielles de WordPress pour la soumission de plugins. Cela inclut de vérifier que votre plugin soit conforme à la licence GPL, de suivre les normes de codage de WordPress, de garantir la sécurité du code et l’absence de contenu malveillant, ainsi que de fournir des documents d’information clairs. Avant de soumettre votre plugin, il est conseillé de lire attentivement le manuel pour les développeurs et les guides de soumission mis à disposition par WordPress. Le processus de soumission doit être effectué via le système de soumission de plugins de WordPress.org et sera soumis à une vérification.

Quelle est la différence entre les fonctionnalités des plugins et des thèmes ? Quand faut-il développer un plugin ?

Le thème (Theme) contrôle principalement l’apparence et le layout du site web, et est généralement responsable des fichiers de modèle (templates), des feuilles de style (stylesheets) ainsi que de certaines fonctionnalités liées à l’affichage des contenus. Les plugins (Plugins), quant à eux, servent à ajouter ou modifier des fonctionnalités au site web, et leur impact dépend (pour la plupart des cas) du thème actuellement utilisé. Un bon principe est le suivant : si une fonctionnalité est directement liée à l’apparence du site (comme le layout des pages ou le choix des couleurs), elle peut être intégrée au thème. Si, en revanche, il s’agit d’une fonctionnalité générale et indépendante (comme un formulaire de contact, des optimisations SEO ou des mécanismes de cache), elle doit exister quel que soit le thème utilisé. Dans ce cas, il est préférable de la développer sous forme de plugin. Cela permet de maintenir une séparation claire entre les fonctionnalités et le design, et d’améliorer la flexibilité du site.