Apprendre le développement de plugins pour WordPress à partir de zéro : Créer votre première fonction personnalisée

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

Maîtriser le développement de plugins pour WordPress est une compétence essentielle pour étendre les fonctionnalités d’un site web et répondre à des besoins personnalisés, contrairement à la simple modification des thèmes. functions.php Par rapport aux fichiers traditionnels, l’utilisation de plugins permet de garantir l’indépendance des fonctionnalités par rapport au thème choisi, ce qui facilite le transfert, la gestion et la maintenance du site. Cet article vous guidera pas à pas pour créer un plugin complet et conforme aux normes de codage de WordPress, à partir de zéro.

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

Avant d’écrire la première ligne de code, vous aurez besoin d’un environnement de développement approprié ainsi que d’une compréhension de base de l’architecture de WordPress.

Configuration de l'environnement de développement

Un environnement de développement local standard est la base d’un développement efficace. Il est recommandé d’utiliser des outils tels que XAMPP, MAMP ou Local by Flywheel, qui permettent d’installer Apache, MySQL/Nginx, PHP et WordPress en un seul clic. De plus, assurez-vous que votre éditeur de texte ou votre IDE (comme VS Code ou PhpStorm) prend en charge l’highlighting du code PHP ainsi que les suggestions de code ; cela améliorera considérablement votre efficacité de développement.

Lectures recommandées Analyse approfondie du développement de plugins WordPress : de la base à la personnalisation efficace.

Comprendre l’architecture des plugins WordPress

Un plugin WordPress est essentiellement un ou plusieurs fichiers PHP, qui sont stockés dans le répertoire approprié du site web. wp-content/plugins/ Il se trouve dans le répertoire. Son principe fondamental repose sur le mécanisme des “ crochets ” (hooks). Les plugins exécutent du code à des moments précis grâce aux “ crochets d’action ” (action hooks), ou modifient les données produites par d’autres fonctions via les “ crochets de filtre ” (filter hooks). add_action et add_filter Ces deux fonctions constituent les clés essentielles pour débuter dans le développement de plugins.

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.

Créez votre premier plugin : une petite utilité pour les salutations.

Nous allons créer un plugin simple appelé “ Salutations quotidiennes ”. Il affichera une petite boîte de bienvenue personnalisée sur le tableau de bord de l'administration du site web.

Créer le fichier principal du plugin.

Tout d’abord, wp-content/plugins/ Créer un nouveau dossier dans le répertoire et le nommer my-first-greeting-pluginDans ce dossier, créez le fichier principal du plugin. my-first-greeting-plugin.php

Chaque plugin doit commencer par des commentaires de tête standard, qui servent d’indicateurs pour que WordPress puisse reconnaître les informations relatives au plugin. Ouvrez le fichier principal et saisissez le code suivant :

<?php
/**
 * Plugin Name: 每日问候
 * Plugin URI:  https://www.yourwebsite.com/my-first-greeting-plugin
 * Description: 这是一个示例插件,用于在仪表盘显示个性化问候。
 * Version:     1.0.0
 * Author:      Your Name
 * Author URI:  https://www.yourwebsite.com
 * License:     GPL v2 or later
 * Text Domain: my-first-greeting
 */

Après avoir enregistré le fichier, accédez à la page des “ Plugins ” dans l’administration de WordPress. Vous devriez voir le plugin “ Daily Greetings ” dans la liste et pouvoir l’activer. Pour l’instant, il n’a aucune fonctionnalité.

Lectures recommandées Guide ultime pour le développement de plugins WordPress : Construire votre premier plugin de zéro à un

Ajouter des gadgets au tableau de bord

Ensuite, nous utiliserons WordPress pour… wp_dashboard_setup Utilisez des « hooks d’action » pour ajouter une petite fonctionnalité personnalisée à votre tableau de bord. Sous les commentaires en tête du fichier principal, ajoutez le code suivant :

// 添加仪表盘小工具
function mfgp_add_dashboard_widget() {
    wp_add_dashboard_widget(
        'mfgp_dashboard_widget',          // 小工具唯一ID
        '每日问候',                       // 小工具标题
        'mfgp_dashboard_widget_content'  // 显示内容的回调函数
    );
}
add_action( 'wp_dashboard_setup', 'mfgp_add_dashboard_widget' );

// 定义小工具内容
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G'); // 获取当前小时(24小时制)

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . sprintf( esc_html__( '%s,%s!欢迎回来。', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>'echo '<p>' . esc_html__( '这是你的第一个插件创建的问候小工具。', 'my-first-greeting' ) . '</p>';
}

Ce code fait deux choses : premièrement, il définit une fonction. mfgp_add_dashboard_widgetUtilisation wp_add_dashboard_widget Une petite fonction a été créée pour effectuer l’enregistrement. Ensuite, une définition a été donnée pour cette fonction. mfgp_dashboard_widget_content Une fonction est utilisée pour générer le contenu des petits outils. Cet outil affiche des salutations différentes en fonction de l’heure de la journée et mentionne le nom d’utilisateur actuellement connecté. Notez que nous avons utilisé… esc_html__() et esc_html() Préparer la traduction des fonctions et effectuer l’échappement des caractères est une pratique importante pour garantir la sécurité et l’internationalisation.

Après avoir activé l’extension, rafraîchissez la page du tableau de bord et vous verrez l’outil “ Salutations quotidiennes ”.

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

Amélioration des fonctionnalités des plugins et pratiques de sécurité

Un plugin de base a été développé, mais pour en faire un outil plus fiable et professionnel, il est nécessaire de se concentrer sur la sécurité, la maintenance et les possibilités de configuration par l'utilisateur.

Page de configuration des plugins

Il serait plus utile de permettre aux utilisateurs de personnaliser leurs salutations. Nous créerons une page de configuration simple pour ce plugin.

Tout d'abord, utilisez admin_menu Ajoutez une page de sous-menu au crochet d'action :

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

// 添加设置菜单
function mfgp_add_admin_menu() {
    add_options_page(
        '每日问候设置',                // 页面标题
        '每日问候',                    // 菜单标题
        'manage_options',             // 所需权限
        'my-first-greeting-plugin',   // 菜单slug
        'mfgp_settings_page_content' // 回调函数
    );
}
add_action( 'admin_menu', 'mfgp_add_admin_menu' );

Ensuite, il faut créer le contenu de la page de paramétrage, les options de configuration pour l’enregistrement, ainsi que le code permettant de sauvegarder le formulaire.

// 设置页面内容
function mfgp_settings_page_content() {
    ?&gt;
    <div class="wrap">
        <h1></h1>
        <form action="/fr/options.php/" method="post" data-trp-original-action="options.php">
            <?php
            settings_fields( 'mfgp_settings_group' ); // 输出安全字段
            do_settings_sections( 'my-first-greeting-plugin' ); // 输出设置区块
            submit_button(); // 输出提交按钮
            ?>
        <input type="hidden" name="trp-form-language" value="fr"/></form>
    </div>
    <?php
}

// 初始化设置
function mfgp_settings_init() {
    register_setting(
        'mfgp_settings_group', // 选项组名
        'mfgp_custom_message', // 选项名
        array( 'sanitize_callback' => 'sanitize_text_field' ) // 清理回调
    );

add_settings_section(
        'mfgp_section', // 区块ID
        '自定义问候设置', // 区块标题
        null, // 区块描述回调(无)
        'my-first-greeting-plugin' // 所属页面
    );

add_settings_field(
        'mfgp_field',
        '自定义问候语前缀',
        'mfgp_field_callback', // 输出字段HTML的回调
        'my-first-greeting-plugin',
        'mfgp_section'
    );
}
add_action( 'admin_init', 'mfgp_settings_init' );

// 设置字段的回调函数
function mfgp_field_callback() {
    $value = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );
    echo '<input type="text" name="mfgp_custom_message" value="' . esc_attr( $value ) . '" class="regular-text" />'echo '<p class="description">Ce texte sera ajouté avant les salutations.</p>';
}

Enfin, modifiez la fonction qui contient le contenu du petit outil afin que les paramètres personnalisés par l'utilisateur soient pris en compte.

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.
// 更新小工具内容函数,使用自定义消息
function mfgp_dashboard_widget_content() {
    $user = wp_get_current_user();
    $hour = date('G');
    $custom_msg = get_option( 'mfgp_custom_message', '祝您有愉快的一天,' );

if ( $hour &gt;= 5 &amp;&amp; $hour < 12 ) {
        $greeting = '早上好';
    } elseif ( $hour >= 12 && $hour &lt; 18 ) {
        $greeting = &#039;下午好&#039;;
    } else {
        $greeting = &#039;晚上好&#039;;
    }

echo &#039;<p>' . esc_html( $custom_msg ) . sprintf( esc_html__( '%s,%s!', 'my-first-greeting' ), $greeting, esc_html( $user-&gt;display_name ) ) . '</p>';
}

Actuellement, une page d'options intitulée “ Salutations quotidiennes ” apparaît dans le menu “ Paramètres ” du back-office de WordPress. Les administrateurs peuvent y enregistrer un prédicat de salutation personnalisé.

Respecter les normes de sécurité et d'encodage.

Pendant le processus de développement, il est essentiel de respecter les bonnes pratiques de sécurité de WordPress : il faut utiliser les fonctions d’échappement appropriées pour tous les données provenant des utilisateurs ou de la base de données et qui vont être affichées. esc_html, esc_attr, esc_urlVérifier et nettoyer toutes les données saisies par les utilisateurs (par exemple, en utilisant des méthodes de validation appropriées). sanitize_text_fieldUtiliser wp_kses_post Ou wp_kses Permettre l’utilisation d’HTML sécurisé. Il est également conseillé de suivre les bonnes pratiques de sécurité. Les normes de codage PHP officielles de WordPressCela permet de garantir la clarté et la cohérence du code.

Internationalisation des plugins et préparation à leur publication

Pour que votre plugin puisse être utilisé par des utilisateurs du monde entier, l’internationalisation est une étape essentielle. De plus, la préparation à sa publication dans le catalogue officiel nécessite également le respect de certaines normes.

Réaliser l'internationalisation des plugins.

Nous avons déjà utilisé cela dans le code. esc_html__() Pour emballer la chaîne de caractères à traduire, il vous faut créer un fichier dans le répertoire des plugins. Pour réaliser l’internationalisation, vous devez… languages Fichier de dossier. Ensuite, ajoutez le code suivant après les commentaires en tête du fichier principal pour charger le champ de texte :

// 加载文本域以实现国际化
function mfgp_load_textdomain() {
    load_plugin_textdomain( 'my-first-greeting', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/' );
}
add_action( 'plugins_loaded', 'mfgp_load_textdomain' );

Par la suite, vous pouvez utiliser des outils tels que Poedit pour analyser les chaînes de traduction contenues dans le code des plugins et générer des résultats appropriés. .pot Des fichiers de modèle, ainsi que des versions adaptées à différentes langues (comme le chinois). zh_CNCréer .po Et après compilation. .mo Fichier, mettre à l’intérieur. languages Dossier.

Prêt à être publié dans le catalogue officiel.

Si vous prévoyez de soumettre un plugin au répertoire de plugins de WordPress.org, vous devez vous assurer de la qualité du code et d’inclure les fichiers de métadonnées nécessaires. Par exemple, créez un… readme.txt Le fichier doit respecter un format spécifique. Les spécifications spécifiques de WordPressCes informations doivent inclure le nom du plugin, sa description, les étapes d’installation, les questions fréquentes, les journaux d’actualisation, etc. De plus, il serait judicieux d’ajouter un mécanisme de désinstallation qui permettrait de nettoyer les données stockées dans la base de données lorsque l’utilisateur supprime le plugin.

// 插件卸载时清理选项
function mfgp_uninstall_hook() {
    delete_option( 'mfgp_custom_message' );
}
register_uninstall_hook( __FILE__, 'mfgp_uninstall_hook' );

résumés

En créant ce plugin de “ salutations quotidiennes ”, nous avons suivi l’intégralité du processus de développement de plugins pour WordPress : de l’établissement de la structure de base des fichiers, à l’ajout de fonctionnalités à l’aide des hooks d’action, en passant par la création d’interfaces de gestion, la mise en œuvre de normes de sécurité et la préparation à l’internationalisation. L’essentiel est de comprendre et d’utiliser habilement le système de hooks de WordPress, tout en donnant toujours la priorité à la sécurité et aux normes de codage. Cet exemple simple est le point de départ de votre voyage dans le développement de plugins : vous pourrez à partir de là explorer des fonctionnalités plus complexes telles que des codes courts personnalisés, des types d’articles personnalisés, des points d’extrémité REST API, et ainsi développer des plugins professionnels et puissants.

FAQ Foire aux questions

Dans quel répertoire doivent être placés les plugins ?

Les plugins WordPress doivent être placés dans le répertoire approprié du site web. wp-content/plugins/ Dans le répertoire, chaque plugin peut être un fichier PHP indépendant. Cependant, il est plus courant qu’un plugin se présente sous la forme d’un dossier portant le même nom que le plugin lui-même, contenant le fichier principal ainsi que d’autres ressources.

Pourquoi mon plugin n’apparaît-il pas dans la liste des plugins en arrière-plan (en mode administrateur) ?

Veuillez vérifier que le format des commentaires en tête du fichier du plugin principal (nom du plugin, description, etc.) est correct et complet. Assurez-vous que le fichier se trouve dans le répertoire approprié et que WordPress a les droits d’y accéder pour le lire. De plus, vérifiez qu’il n’y a pas d’espaceurs ou de caractères inutiles en début du code PHP.

Comment déboguer les erreurs PHP présentes dans un plugin ?

Dans wp-config.php Dans le document, il sera indiqué que... WP_DEBUG La constante est définie à trueCela permettra à WordPress d'afficher les erreurs, les avertissements et les notifications PHP sur la page. Veuillez noter que cette fonctionnalité ne doit être activée que dans un environnement de développement et qu'elle doit être désactivée avant la mise en ligne du site.

Quelle est la différence entre les fichiers functions.php des plugins et ceux des thèmes ?

Dans le cadre du sujet… functions.php Les fonctionnalités ajoutées sont liées au thème sélectionné. Lors du changement de thème, ces fonctionnalités peuvent devenir inutilisables. En revanche, les fonctionnalités fournies par des plugins sont indépendantes du thème ; elles sont toujours disponibles tant que le plugin est activé, quel que soit le thème utilisé. Pour des fonctionnalités universelles (c’est-à-dire pouvant être utilisées avec n’importe quel thème), le développement de plugins représente donc une meilleure option.

Comment permettre à d’autres développeurs d’élargir mon plugin ?

Vous pouvez permettre à d’autres développeurs d’élargir votre plugin en fournissant des “ crochets d’action ” (action hooks) et des “ crochets de filtre ” (filter hooks) personnalisés. do_action() Créez des “ hooks d’action ” qui effectueront les opérations nécessaires là où le code doit être injecté. apply_filters() Créez des « hooks » de filtre qui permettent aux autres plugins de modifier certaines valeurs de données contenues dans le vôtre. C’est un modèle de collaboration courant au sein de l’écosystème WordPress.