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

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

Pourquoi est-il nécessaire de développer des plugins personnalisés ?

WordPress est réputé pour sa grande extensibilité, et l’un de ses principaux secrets réside dans son système de plugins. Lorsque les besoins d’un site en termes de fonctionnalités dépassent les capacités d’un thème ou des plugins existants, le développement de plugins personnalisés devient la meilleure option. Cela permet de répondre de manière plus adaptée aux spécificités du site, sans avoir à modifier directement le thème lui-même. functions.php Par rapport aux fichiers simples, la création d’un plugin indépendant présente de nombreux avantages. Un plugin est séparé du thème utilisé, ce qui signifie que ses fonctionnalités sont conservées même en changeant de thème, garantissant ainsi son indépendance et sa facilité d’entretien. De plus, un plugin bien structuré peut être facilement déplacé et réutilisé sur différents sites, et peut même être distribué via des canaux officiels ou tiers.

Le développement de plugins personnalisés vous permet de contrôler avec précision la logique des fonctionnalités, évitant ainsi les conséquences négatives sur la performance dues à l’installation de trop de plugins généraux, ainsi que les risques de conflits de code. Que ce soit pour la génération de courts codes simples ou pour la gestion complexe de données et de flux de travail, le développement de plugins vous ouvre la porte à une personnalisation approfondie de WordPress.

Construire la structure de base de votre premier plugin

Un plugin WordPress est essentiellement un ou plusieurs fichiers qui se trouvent dans le répertoire des plugins de votre site web. wp-content/plugins/ Les fichiers PHP situés dans le répertoire. La première étape pour créer un plugin consiste à établir sa structure de base.

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

Créer le fichier principal du plugin et y ajouter des commentaires d'introduction.

Tout d’abord, wp-content/plugins/ Créez un nouveau dossier dans le répertoire, par exemple… my-first-pluginEnsuite, créez le fichier PHP principal à l’intérieur de ce dossier ; il porte généralement le même nom que le dossier lui-même.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.

Le début du fichier doit contenir des commentaires de type « header » conformes aux normes de WordPress, qui sont essentiels pour que WordPress puisse reconnaître le plugin. Ces commentaires fournissent des informations de base sur le plugin et seront affichées sur la page de gestion des plugins en back-office.

<?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
 */

Après avoir enregistré le fichier, connectez-vous à l’administration de WordPress et allez à la page des “ Plugins ”. Vous devriez voir le plugin intitulé “ Mon premier plugin personnalisé ” dans la liste. Vous pourrez alors l’activer ou le désactiver. Pour l’instant, il n’a aucune fonctionnalité réelle.

Créer une enveloppe de sécurité pour les fonctionnalités des plugins

Afin d’éviter les conflits entre les noms de fonctions et les thèmes ou d’autres plugins, la meilleure pratique consiste à regrouper toutes les fonctionnalités dans une classe, ou à ajouter un préfixe unique à chacune d’elles. Ici, nous utilisons la méthode des classes, car elle offre une meilleure encapsulation et une structure de organisation plus claire.

Dans le fichier principal, après les commentaires d’en-tête, nous pouvons commencer à définir la classe principale du plugin.

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

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

class My_First_Plugin {
    /**
     * 构造方法,用于初始化插件
     */
    public function __construct() {
        // 初始化钩子
        $this->init_hooks();
    }

/**
     * 初始化 WordPress 钩子(动作和过滤器)
     */
    private function init_hooks() {
        // 后续的钩子将在这里添加
    }
}

// 初始化插件
new My_First_Plugin();

Par l’intermédiaire de… if ( ! defined( 'ABSPATH' ) ) Avec cette ligne de code, nous nous assurons que ce fichier ne peut être accessible que depuis l’environnement WordPress, ce qui améliore la sécurité. Le cadre de base du plugin est maintenant prêt à être utilisé.

Étendre les fonctionnalités de base de WordPress à l’aide de hooks

L’API des plugins pour WordPress repose essentiellement sur des “ hooks ” (crochets), qui vous permettent d’exécuter du code personnalisé à des moments précis ou sur des données spécifiques. Les hooks se divisent en deux catégories : les actions (Actions) et les filtres (Filters).

Comprendre et ajouter un simple crochet d’action (action hook)

Les “ hooks d’action ” exécutent votre code lorsque des événements spécifiques se produisent, par exemple la publication d’un article ou le chargement d’une page de gestion. Ils ne retournent aucune valeur ; ils se contentent de « faire » quelque chose.

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

Ajoutons une fonction qui permet d’insérer automatiquement un texte personnalisé à la fin de chaque article. Nous allons l’utiliser… the_content Ce filtre (oui, bien qu’il porte le nom de « filtre », il est souvent utilisé pour ajouter du contenu ; techniquement, il s’agit bien d’un filtre, car il reçoit et retourne du contenu)… Cependant, afin de démontrer d’abord une action purement fonctionnelle, nous allons également ajouter une action qui affiche des messages dans la barre de gestion en arrière-plan.

Tout d’abord, init_hooks Ajouter une fonction de registration des « hooks » dans la méthode :

private function init_hooks() {
    // 在文章内容末尾添加信息的过滤器
    add_filter( 'the_content', array( $this, 'append_custom_text' ) );
    // 在管理栏添加节点的动作
    add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_node' ), 999 );
}

Ensuite, définez la méthode de rappel (callback) correspondante à l’intérieur de la classe :

Lectures recommandées Guide complet pour le développement d’extensions WordPress : de l’apprentissage de base à la maîtrise de la création de fonctionnalités personnalisées

/**
 * 在文章内容末尾添加自定义文本(过滤器回调)
 *
 * @param string $content 原始文章内容。
 * @return string 修改后的文章内容。
 */
public function append_custom_text( $content ) {
    if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $custom_text = '<p><em>Ce texte bénéficie du soutien technique de “ Mon premier plugin ”.</em></p>'\;';
    if (isset($custom_text)) {
        $$content .= $custom_text;
    }
    return $$content;
}

/**
 * Ajouter un nœud personnalisé (appel de retour d'action) à la barre d'administration
 *
 * @param WP_Admin_Bar $wp_admin_bar Objet de la barre d'administration WordPress.
 */
public function add_admin_bar_node( $wp_admin_bar ) {
    $$args = array(
        'id'    =&gt; 'my_plugin_node',
        'title' =&gt; 'Mon plugin',
        'href'  =&gt; admin_url( 'plugins.php' ),
        'meta'  =&gt; array( 'class' =&gt; 'my-plugin-node' )
    );
    $$wp_admin_bar-&gt;add_node( $$args );
}

Maintenant, après l’activation du plugin, le texte ajouté apparaîtra en bas de chaque article sur la page d’accueil, et un menu intitulé “Mes plugins” sera également disponible dans la barre de gestion en haut de l’interface administrative.

Utiliser des filtres pour modifier la sortie des données.

Les filtres sont utilisés pour modifier les données transmises à un point spécifique. Ils reçoivent une valeur et doivent retourner la valeur modifiée. Nous en avons utilisé un précédemment. append_custom_text En fait, une méthode n’est rien de plus qu’un appel de fonction de type filtre (filter callback). Créons un exemple de filtre encore plus typique : modifions la longueur du résumé d’un article.

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.

Dans init_hooks Ajouter au milieu :

add_filter( 'excerpt_length', array( $this, 'custom_excerpt_length' ), 999 );

Ensuite, définez la méthode de rappel (callback) :

/**
 * 修改文章摘要的默认字数长度
 *
 * @param int $length 默认的摘要长度。
 * @return int 修改后的摘要长度。
 */
public function custom_excerpt_length( $length ) {
    // 将摘要长度设置为 30 个字
    return 30;
}

Créer une page d'options pour un plugin configurable.

Afin de rendre les plugins plus flexibles, il est généralement nécessaire de fournir aux utilisateurs une page de paramétrage. WordPress propose l“” API des paramétrages » pour créer ces pages de manière sûre et standardisée.

Créer un menu de gestion ainsi que des sous-pages.

Tout d’abord, nous devons ajouter un élément de menu dans l’administration de WordPress. Nous allons utiliser… add_options_page La fonction ajoute une sous-page au menu principal “ Paramètres ”.

Dans init_hooks Ajouter une action à…

add_action( 'admin_menu', array( $this, 'add_plugin_admin_menu' ) );

Définition de la méthode pour ajouter un menu :

/**
 * 向 WordPress 后台添加插件设置页面
 */
public function add_plugin_admin_menu() {
    add_options_page(
        '我的插件设置',          // 页面标题
        '我的插件',             // 菜单标题
        'manage_options',       // 所需权限
        'my-first-plugin',      // 菜单 Slug
        array( $this, 'display_plugin_admin_page' ) // 回调函数
    );
}

Utiliser l’API de configuration pour enregistrer et afficher les champs.

Ensuite, nous devons définir… display_plugin_admin_page Des méthodes pour rendre le contenu de la page et enregistrer les paramètres, les champs et les sections.

Tout d’abord, ajoutez un autre crochet pour enregistrer les paramètres de configuration :

add_action( 'admin_init', array( $this, 'register_plugin_settings' ) );

Ensuite, implémentez les méthodes correspondantes :

/**
 * 使用 WordPress 设置 API 注册设置、字段和章节
 */
public function register_plugin_settings() {
    // 注册一个设置,存储到一个选项 `my_first_plugin_options`
    register_setting(
        'my_first_plugin_options_group', // 选项组名
        'my_first_plugin_options'        // 选项名
    );

// 添加一个设置章节
    add_settings_section(
        'my_first_plugin_main_section',  // 章节 ID
        '主要设置',                      // 章节标题
        array( $this, 'render_section_description' ), // 章节描述回调
        'my-first-plugin'                // 页面 Slug
    );

// 向章节中添加一个文本字段
    add_settings_field(
        'custom_text_field',             // 字段 ID
        '自定义文本',                    // 字段标题
        array( $this, 'render_text_field' ), // 字段渲染回调
        'my-first-plugin',               // 页面 Slug
        'my_first_plugin_main_section'   // 所属章节 ID
    );
}

/**
 * 渲染设置章节的描述文字
 */
public function render_section_description() {
    echo '<p>Configurez ici les paramètres de votre premier plugin.</p>';
}

/**
 * 渲染自定义文本输入字段
 */
public function render_text_field() {
    $options = get_option( 'my_first_plugin_options' );
    $value = isset( $options['custom_text_field'] ) ? $options['custom_text_field'] : '';
    echo '<input type="text" name="my_first_plugin_options[custom_text_field]" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">Le texte saisi ici sera affiché à la fin de l’article.</p>'
    <div class="wrap">
        <h1></h1>
        <form action="/fr/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            // 输出安全字段、章节和字段
            settings_fields( 'my_first_plugin_options_group' );
            do_settings_sections( 'my-first-plugin' );
            submit_button( '保存设置' );
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    &lt;?php
}

Enfin, nous devons modifier ce qui a été fait précédemment. append_custom_text Méthode pour lire le texte sauvé par l'utilisateur à partir des options :

fonction publique append_custom_text( $content ) {
    si ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
        $options = get_option( 'my_first_plugin_options' );
        $custom_text = isset( $options['custom_text_field'] ) &amp;&amp; ! empty( $options['custom_text_field'] ) ?
            '<p><em>'`. esc_html($options['custom_text_field'])`.'</em></p>' :
            '<p><em>Ce texte bénéficie du soutien technique de “ Mon premier plugin ”.</em></p>';
        $content .= $custom_text;
    }
    return $content;
}

Désormais, les utilisateurs peuvent personnaliser le texte affiché en bas des articles depuis la page “ Paramètres ” -> “ Mes plugins ”.

résumés

À travers ce guide, nous avons suivi de manière complète le processus de base pour développer un plugin personnalisé pour WordPress : de la création de la structure de fichiers de base et de l’emballage du code de manière sécurisée, à une compréhension approfondie et à l’utilisation des mécanismes d’extension fondamentaux de WordPress – les hooks d’actions et de filtres – pour finalement réaliser un plugin configurable comprenant une page de paramétrage en back-end. Nous avons également montré comment utiliser de manière standardisée l’API de configuration de WordPress pour créer des pages d’options, ce qui garantit le stockage sécurisé des données et la cohérence de l’interface utilisateur.

Maîtriser ces connaissances de base est une étape essentielle pour vous lancer dans le développement de plugins plus complexes. Par la suite, vous pourrez explorer des sujets plus avancés, tels que la personnalisation des tables de base de données, la création de codes courts, l’ajout de widgets, la rédaction d’extrémités API REST et la mise en œuvre d’interactions AJAX. N’oubliez pas que une bonne organisation du code, des vérifications de sécurité rigoureuses (comme les contrôles d’accès, le nettoyage et l’encodage des données) ainsi que le respect des normes de codage de WordPress sont des clés pour développer des plugins de haute qualité et faciles à maintenir.

FAQ Foire aux questions

Quelles connaissances préalables sont nécessaires pour développer un plug-in ?

Vous devez posséder des connaissances de base en programmation PHP, y compris la syntaxe, les variables, les fonctions, les classes et les objets. Une compréhension de base des langages HTML, CSS et JavaScript sera également très utile, en particulier lors de la création de plugins impliquant des interactions utilisateur ou des interfaces back-end complexes. Il est essentiel de maîtriser les fonctionnalités de base et l’architecture de WordPress.

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

Tout d’abord, assurez-vous que… wp-config.php Dans le fichier… WP_DEBUG Set to trueCela activera la fonction de rapport d’erreurs de WordPress. Utilisez les outils de développement de votre navigateur (les onglets Console et Network) pour vérifier les erreurs JavaScript ainsi que les demandes réseau. Pour le code PHP, vous pouvez également utiliser des outils spécifiques. error_log() La fonction enregistre les variables ou les informations dans le journal de débogage du serveur, ou utilise des plugins de débogage spécialisés pour suivre le flux d'exécution du code et l'état des variables.

Est-il possible de déplacer le code du fichier `functions.php` du thème directement dans le plugin ?

Dans de nombreux cas, c’est possible, mais il faut faire attention aux problèmes de référencement des chemins et des URL. L’utilisation de ces éléments est recommandée dans les sujets (thèmes). get_template_directory_uri() Pour obtenir l’URI du répertoire des thèmes, il faut utiliser une autre méthode dans le plugin. plugin_dir_url(FILE)De même, la fonction pour obtenir le chemin du répertoire des thèmes. get_template_directory() Cela devrait également être remplacé par le plugin correspondant. plugin_dir_path(FILE)De plus, il est essentiel de s’assurer que toutes les fonctionnalités du code soient correctement encapsulées dans des classes ou des fonctions portant un préfixe, afin d’éviter les conflits.

Quels points doivent être pris en compte lors du développement de plugins commerciaux ?

Les plug-ins commerciaux distribués dans le cadre d'un plan de développement doivent accorder une plus grande attention à la qualité du code, à la sécurité et à l'évolutivité. Il est nécessaire de procéder à une préparation approfondie en matière d'internationalisation et de localisation (en utilisant...). __()_e() Il est nécessaire de prendre en compte les fonctions et les champs de texte afin de faciliter la traduction. Le code doit respecter les normes de codage de WordPress. Il faut également réfléchir à la licence utilisée (généralement la GPL) ainsi qu’aux mécanismes de mise à jour ultérieurs. Il est essentiel de fournir des documents d’utilisation clairs et détaillés, ainsi que des canaux de support technique pour l’extension. Dans l’écosystème de 2026, assurer la compatibilité de l’extension avec les nouvelles versions de WordPress, les versions de PHP, les thèmes populaires et d’autres extensions fait partie intégrante de l’entretien continu de l’extension.

Comment ajouter une prise en charge multilingue à un plugin ?

WordPress utilise la technologie GNU gettext pour l’internationalisation (i18n). Tout d’abord, toutes les chaînes de caractères qui doivent être traduites dans les plugins doivent être encadrées par des fonctions spécifiques. __('文本', 'my-first-plugin') Utilisé pour retourner la traduction._e('文本', 'my-first-plugin') Utilisez ce code pour effectuer la traduction. Ensuite, utilisez un outil comme Poedit pour analyser le code source du plugin et générer le résultat de la traduction. .pot Des fichiers de modèle. Les traducteurs créent des versions dans la langue correspondante en se basant sur ce modèle. .po Le fichier est ensuite compilé en un code lisible par la machine. .mo Fichiers. Enfin, il est nécessaire de… load_plugin_textdomain() La fonction est intégrée dans le code d’initialisation du plugin afin de charger les fichiers de traduction depuis le chemin correct.