Découvrez les secrets du développement de plugins : construisez votre première extension à partir de zéro.

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

Découvrez les secrets du développement de plugins : construisez votre première extension à partir de zéro.

Le charme fondamental de WordPress réside dans son extrême extensibilité. En développant des plugins personnalisés, les développeurs peuvent ajouter à un site web toutes les fonctionnalités nécessaires de manière transparente, sans avoir à modifier le code source de WordPress lui-même. Cela garantit la sécurité et la facilité des mises à jour. Ce guide vous guidera de manière systématique à travers les processus de base, les normes d’architecture et les meilleures pratiques pour le développement de plugins WordPress.

Les bases fondamentales du développement d'extensions

Avant de commencer à écrire du code, il est essentiel de comprendre les concepts de base et la structure standard des plugins WordPress. Un plugin est essentiellement un ou plusieurs fichiers PHP qui sont regroupés dans un dossier et qui contiennent un fichier de commentaires d’en-tête spécial.

Standard du fichier principal des plugins

Chaque plugin doit disposer d’un fichier PHP principal. Ce fichier doit contenir les informations de base nécessaires pour que WordPress puisse le reconnaître et le gérer. Ces informations sont présentées sous la forme d’un bloc de commentaires spécifique. Par exemple, pour un plugin nommé… my-first-plugin.php Le fichier peut contenir les éléments suivants :

Lectures recommandées Guide de début pour le développement de thèmes WordPress : Créez votre premier thème à partir de zéro

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

Ces informations seront affichées directement sur la page de gestion des “ plugins ” dans l’administration de WordPress. Parmi elles,Text Domain et Domain Path Conçu pour l’internationalisation (i18n), cet outil permet à l’extension de prendre en charge plusieurs langues.

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.

Répertoire des plugins et organisation des fichiers

Un répertoire de plugins bien structuré facilite à la fois le développement et la maintenance, et permet aux utilisateurs de mieux comprendre le fonctionnement du système. Il est recommandé de suivre la méthode d’organisation suivante :

/my-first-plugin/
├── my-first-plugin.php      // 主文件
├── uninstall.php            // 卸载清理脚本
├── includes/                // 核心功能类与函数
│   ├── class-core.php
│   └── functions.php
├── admin/                   // 后台相关文件
│   ├── css/
│   ├── js/
│   └── class-admin.php
├── public/                  // 前台相关文件
│   ├── css/
│   ├── js/
│   └── class-public.php
├── assets/                  // 静态资源(图片等)
└── languages/               // 翻译文件(.po, .mo)

Cette structure séparée permet de distinguer clairement la logique du backend, la logique du frontend et les ressources communes, ce qui est en conformité avec les meilleures pratiques de développement pour WordPress.

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

L’API des plugins WordPress est construite autour des “ hooks ”, qui constituent le noyau de son architecture basée sur des événements. Il existe deux types de hooks : les actions (actions) et les filtres (filters). Comprendre et maîtriser leur fonctionnement est essentiel pour le développement de plugins.

L'utilisation des hooks d'action.

Les « action hooks » vous permettent d’ajouter du code personnalisé à des moments précis de l’exécution de WordPress. Par exemple, lorsque un article est publié, ou lorsque le menu de l’administration est initialisé. Vous pouvez les utiliser pour effectuer des tâches spécifiques à ces moments-là. add_action() La fonction “monte” (ou “associe”) votre propre fonction à ces points d’ancrage (ou “hooks”).

Lectures recommandées Guide technique pour la création d’un site web : une analyse complète du processus, de la planification à la mise en ligne.

Voici un exemple simple pour ajouter une ligne de texte personnalisée en bas de la page d'un site web. Nous commençons par créer une fonction dans le fichier principal du plugin, puis nous l’associons (« la montons ») au système du site web. wp_footer C'est sur ce crochet d'action.

function myplugin_add_footer_text() {
    echo '<p style="text-align:center;">Merci d’utiliser ce plugin !</p>';
}
add_action( 'wp_footer', 'myplugin_add_footer_text' );

Lorsque WordPress exécute… wp_footer Lors de la positionnement (généralement dans le sujet)… footer.php Lorsque la fonction est appelée (dans le code), la fonction que nous avons ajoutée sera exécutée.

L'utilisation des filtres hooks.

Les crochets de filtre permettent de modifier les données transmises dans un processus. Ils vous permettent d’intercepter, de vérifier et de modifier une variable avant qu’elle ne soit utilisée par WordPress ou d’autres plugins. add_filter() Une fonction est utilisée pour appliquer un filtre.

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

Par exemple, pour modifier la sortie par défaut des titres d’articles et ajouter un préfixe spécifique avant chaque titre, nous allons charger (« mapper ») la fonction concernée. the_title Cet élément de filtrage est accroché à ce crochet.

function myplugin_prefix_post_title( $title, $id = null ) {
    // 确保只在主循环且在非管理后台时添加前缀
    if ( ! is_admin() && in_the_loop() ) {
        $title = '[推荐] ' . $title;
    }
    return $title;
}
add_filter( 'the_title', 'myplugin_prefix_post_title', 10, 2 );

Les paramètres ici… 10 Il s’agit de la priorité (plus le numéro est petit, plus l’action est exécutée en premier).2 Cela signifie que notre fonction accepte deux paramètres.$title et $idLa fonction de filtrage doit retourner la valeur modifiée.

Création d'une page de gestion des plugins

De nombreux plugins nécessitent des options de configuration dans l’administration de WordPress. Cela se fait généralement en ajoutant des pages au menu de gestion. WordPress propose une gamme de fonctions permettant de créer des menus principaux, des sous-menus ainsi que des pages d’options.

Lectures recommandées Tutoriel complet : Améliorez le taux de conversion des ventes en personnalisant le modèle de page produit de WooCommerce.

Ajouter un menu de gestion de niveau supérieur

Vous pouvez utiliser… add_menu_page() Cette fonction crée un élément de menu en arrière-plan indépendant pour votre plugin. Elle nécessite plusieurs paramètres pour définir le titre de la page, le nom du menu, les autorisations requises, l’identifiant unique du menu, ainsi que la fonction de rappel (callback function) à exécuter.

Le code suivant montre comment ajouter une page de menu principal simple, et assure qu’elle n’apparaisse que lorsque l’administrateur se connecte.

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.
fonction myplugin_add_admin_menu() {
    add_menu_page(
        'Paramètres de mon plugin',   // Titre de la page
        'Mon plugin',   // Titre du menu
        'manage_options',   // Capacité d'autorisation (généralement pour les administrateurs)
        'myplugin-settings',   // Slug du menu
        'myplugin_settings_page',   // Fonction de rappel pour afficher le contenu de la page
        'dashicons-admin-generic',   // Icône (utilisant Dashicons)
        30   // Position du menu
    );
}
add_action( 'admin_menu', 'myplugin_add_admin_menu' );

// Définition du contenu de la page de paramètres
function myplugin_settings_page() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/fr/options.php/" method="post" data-trp-original-action="options.php">
            
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Ici,myplugin_settings_page La fonction est chargée de rendre le contenu HTML de la page. Dans des projets réels, vous combinerez cela avec les API définies par WordPress pour gérer l’affichage des contenus de manière plus efficace.register_setting, add_settings_section, add_settings_field) pour créer des formulaires qui peuvent être enregistrés.

Créer des formulaires et enregistrer les paramètres

Afin de traiter les données saisies par les utilisateurs de manière sûre et conforme aux normes, il est nécessaire d’utiliser l’API de configuration de WordPress. Celle-ci est responsable de la validation des données, ainsi que de leur stockage dans la base de données. Il faut d’abord enregistrer une nouvelle option de configuration, puis ajouter les champs correspondants.

L'exemple suivant montre comment enregistrer un champ de texte et conserver sa valeur.

function myplugin_settings_init() {
    register_setting(
        'myplugin_options', // 选项组名
        'myplugin_api_key', // 选项名(存储在 wp_options 表中)
        array(
            'type' => 'string',
            'sanitize_callback' => 'sanitize_text_field', // 数据清理回调
            'default' => ''
        )
    );

    add_settings_section(
        'myplugin_section_main',
        '主要设置',
        null,
        'myplugin-settings'
    );

    add_settings_field(
        'myplugin_field_api',
        'API 密钥',
        'myplugin_field_api_cb',
        'myplugin-settings',
        'myplugin_section_main',
        array( 'label_for' => 'myplugin_api_key' )
    );
}
add_action( 'admin_init', 'myplugin_settings_init' );

function myplugin_field_api_cb() {
    $value = get_option( 'myplugin_api_key', '' );
    echo '<input type="text" id="myplugin_api_key" name="myplugin_api_key" value="' . esc_attr( $value ) . '" class="regular-text">';
}

De cette manière, les données soumises par le formulaire seront traitées avant d’être envoyées. sanitize_text_field La fonction effectue le nettoyage des données, puis les enregistre automatiquement dans la base de données. wp_options Dans le tableau, le nom de la clé est… myplugin_api_key

Garantir la sécurité et les performances des plug-ins.

Lors du développement de plugins, la sécurité et les performances sont des considérations essentielles qui ne peuvent pas être ignorées. Un plugin non sécurisé peut devenir une source de vulnérabilités pour tout le site WordPress.

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

Ne croissez jamais aux données saisies par les utilisateurs. Tous les données provenant de sources externes (telles que des formulaires, des URL ou des bases de données) doivent être vérifiées, nettoyées et échappées avant d’être affichées ou utilisées.

  • Vérification : Contrôler si les données respectent le format attendu (par exemple, s’il s’agit d’une adresse e-mail ou d’un numéro).
  • Nettoyage : Suppression des caractères ou des éléments non autorisés dans les données (par exemple, les balises HTML).
  • Échappement : Lors de l’affichage de données dans HTML, JavaScript ou des URL, il est nécessaire de les encoder pour éviter les attaques de type cross-site scripting (XSS).

WordPress propose de nombreuses fonctions d'aide, par exemple :
* sanitize_text_field()Nettoyer une chaîne de texte.
* esc_html(): Échapper à l’affichage HTML.
* esc_url(): Échappement de URL.
* wp_kses_post()Les balises HTML peuvent être utilisées pour filtrer le contenu des articles via les filtres correspondants.

Le chargement correct des scripts et des styles

Afin de ne pas ralentir la vitesse de chargement de la page et d’éviter les conflits, les fichiers JavaScript et CSS doivent être correctement enregistrés et chargés dans l’ordre approprié, en utilisant les méthodes fournies par WordPress. wp_enqueue_script() et wp_enqueue_style() Une fonction.

Le code ci-dessous montre comment charger des fichiers JS et CSS exclusifs uniquement sur la page de gestion propre au plugin.

function myplugin_load_admin_assets( $hook ) {
    // 只在我们插件的设置页加载
    if ( $hook != 'toplevel_page_myplugin-settings' ) {
        return;
    }
    wp_enqueue_style(
        'myplugin-admin-css',
        plugins_url( 'admin/css/style.css', __FILE__ ),
        array(),
        '1.0.0'
    );
    wp_enqueue_script(
        'myplugin-admin-js',
        plugins_url( 'admin/js/script.js', __FILE__ ),
        array( 'jquery' ), // 声明依赖 jQuery
        '1.0.0',
        true // 在页脚加载
    );
}
add_action( 'admin_enqueue_scripts', 'myplugin_load_admin_assets' );

Cette approche assure que les ressources ne soient chargées que lorsque cela est nécessaire, et que les dépendances (comme jQuery) soient gérées correctement. De plus, les paramètres de version aident à gérer le cache des navigateurs.

résumés

Le développement de plugins pour WordPress est un projet systématique qui commence par le respect de la structure des fichiers standard et des en-têtes d’information. L’essence de cette approche réside dans l’utilisation maîtrisée des hooks d’actions et de filtres, afin d’intégrer les fonctionnalités du plugin de manière non intrusive dans le cycle de vie de WordPress. Créer une interface d’administration claire pour le plugin et respecter strictement l’API de configuration permet d’améliorer considérablement l’expérience utilisateur ainsi que la sécurité des données. Enfin, faire de la sécurité (validation, nettoyage des données, échappement des caractères dangereux) et de la performance (chargement des ressources sur demande) les principes directeurs du développement est la clé pour créer des plugins de haute qualité et fiables. En suivant ces étapes et ces bonnes pratiques, vous serez en mesure de créer des extensions pour WordPress puissantes, sûres et faciles à maintenir.

FAQ Foire aux questions

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

Pour développer des plugins pour WordPress, il est nécessaire de maîtriser le langage de programmation PHP, car les plugins sont principalement composés de code PHP. Il est également essentiel de connaître les bases d’HTML, CSS et JavaScript pour créer les interfaces utilisateur et les interactions. Le plus important est de comprendre la structure de base de WordPress, en particulier son système de hooks (actions et filtres), la hiérarchie des templates des thèmes, ainsi que les opérations sur la base de données. WP_Query et wpdb Classe.)

Comment déboguer un plugin WordPress en cours de développement ?

La méthode la plus efficace est de… 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. Vous pouvez également utiliser… error_log() La fonction enregistre les informations de débogage personnalisées dans le journal d'erreurs du serveur. Pour un débogage plus avancé, vous pouvez envisager d'utiliser des outils de débogage PHP spécialisés, tels que Xdebug.

Comment les plugins devraient-ils gérer les opérations sur la base de données ?

Pour le stockage de données simples, il est recommandé d’utiliser l’API d’options de WordPress.add_option, get_option, update_optionCes outils sont utilisés pour stocker des données sous forme de paires de clés et de valeurs. Pour les données structurées qui nécessitent une définition personnalisée des tables, vous pouvez en faire usage lorsque le plugin est activé. dbDelta() Des fonctions sont utilisées pour créer ou mettre à jour la structure des tables de manière sûre, ce qui nécessite de respecter un format SQL spécifique. Assurez-vous d’en faire usage. $wpdb L’objet global effectue toutes les requêtes sur la base de données et utilise sa méthode `prepare` pour empêcher les attaques de injection SQL.

Comment puis-je rendre mon plugin compatible avec l’internationalisation multilingue ?

WordPress utilise le framework GNU gettext pour la internationalisation. Vous devez configurer correctement ces informations dans le fichier d’en-tête principal de votre plugin. Text Domain et Domain PathDans le code, utilisez < pour marquer tous les chaînes de caractères qui doivent être traduites. __()(Dédié aux valeurs retournées) Ou _e()(Ceci est destiné à être utilisé directement dans des fonctions de traduction.) Ensuite, utilisez un outil comme Poedit pour analyser le code source et générer la traduction nécessaire. .pot Fichiers de modèle, et sur la base de ceux-ci, créer les versions pour chaque langue. .po et .mo Translatez le fichier et placez-le à l’endroit spécifié. Domain Path Dans le répertoire.

Après avoir terminé le développement de mon plugin, comment puis-je le publier dans le répertoire officiel ?

Tout d’abord, assurez-vous que votre plugin respecte pleinement les directives officielles du « Guide de développement de plugins » ainsi que les exigences de soumission, notamment en ce qui concerne les normes de codage, la sécurité et les accords de licence (le plugin doit être compatible avec la licence GPL). Créez ensuite un compte sur WordPress.org et soumettez votre plugin pour examen. Une fois votre plugin approuvé, vous pourrez utiliser Subversion pour le soumettre au répertoire de code officiellement attribué. Après la soumission, vous devrez remplir la page de description du plugin, y compris l’ajout d’un bannier, d’une icône, de captures d’écran et de descriptions détaillées, afin que les utilisateurs puissent le consulter et le télécharger.