Guide pratique pour le développement de plugins WordPress : Construire votre premier plugin fonctionnel de zéro

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

Le système de plugins de WordPress est au cœur de sa grande capacité d’extension. Grâce aux plugins, les développeurs peuvent ajouter à un site web toutes sortes de fonctionnalités, allant de simples formulaires de contact à des systèmes de commerce électronique complexes. Cet article vous guidera pas à pas dans la création d’un plugin complet, vous permettant de comprendre en profondeur sa structure fondamentale, son mécanisme d’interaction avec le reste du système (les « hooks »), ses aspects de sécurité, ainsi que les meilleures pratiques à suivre. À la fin, vous aurez un plugin prêt à être publié ou utilisé directement.

Environnement de développement et préparatifs de base

Avant d’écrire la première ligne de code, il est essentiel disposer d’un environnement de développement stable et efficace. Cela vous permet non seulement de vous concentrer sur la construction de la logique, mais aussi d’éviter de nombreux erreurs courantes.

Configuration de l'environnement de développement local

Il est recommandé d’utiliser des ensembles d’outils pour serveurs locaux tels que XAMPP, MAMP ou le plus professionnel Local by Flywheel. Vérifiez que la version de PHP (recommandée : 7.4 ou ultérieure) est compatible avec l’environnement WordPress que vous prévoyez de déployer, et activez le mode de débogage. Dans WordPress…wp-config.phpDans le fichier, les paramètres sont définis.WP_DEBUGPourtrueCela affichera tous les erreurs et avertissements pendant la phase de développement, vous permettant de localiser rapidement les problèmes.

Lectures recommandées Guide de début pour le développement de plugins WordPress : De zéro à la création de modules fonctionnels professionnels

Planification de la structure des fichiers de plugins

Un plugin standard nécessite au moins un fichier principal. La pratique courante consiste à créer un dossier dédié au plugin, qui porte le nom de sa fonctionnalité principale.my-first-pluginDans ce dossier, le fichier principal porte généralement le même nom que le dossier et se termine par une extension..phpà savoirmy-first-plugin.phpUne structure claire facilite l’ajout ultérieur de fichiers JavaScript, CSS, de paquets de langages ou de classes.

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éer le fichier principal du plugin ainsi que les informations de tête de base.

L“” entrée » des plugins, ainsi que le processus d’identification de leur identité, dépendent des informations de tête (header) présentes en haut du fichier principal. C’est ce qui permet à WordPress de reconnaître et de charger les plugins.

Rédiger une tête de plugin standard

Au début du fichier PHP principal, il est obligatoire d’utiliser un bloc de commentaires PHP spécifique pour fournir des informations sur le plugin. Ces informations seront affichées sur la page de gestion des plugins dans l’administration de WordPress.

<?php
/**
 * Plugin Name:       我的第一个功能插件
 * Plugin URI:        https://example.com/my-first-plugin
 * Description:       这是一个实战指南中创建的示例插件,用于演示核心开发流程。
 * Version:           1.0.0
 * Author:            你的名字
 * Author URI:        https://example.com
 * License:           GPL v2 or later
 * Text Domain:       my-first-plugin
 * Domain Path:       /languages
 */

Parmi ceux-ci,Plugin NameetText DomainCela est obligatoire ; les autres éléments sont optionnels. Champ de texte.Text DomainUtilisé pour le soutien à l’internationalisation.

Empêcher l’accès direct aux fichiers

Afin de protéger la sécurité du code des plugins et d’éviter toute fuite d’informations ou erreur pouvant résulter d’un accès direct au fichier principal via une URL, il est nécessaire d’ajouter une vérification d’accès direct après les informations de tête (header) et avant tout autre code.

Lectures recommandées Guide de développement personnalisé pour les plugins WooCommerce : Créez votre propre magasin en ligne

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

ConstanteABSPATHIl s’agit du chemin absolu du répertoire racine de WordPress, qui est défini lors de l’exécution de ce dernier. Cette condition assure que le code suivant n’est exécuté que dans un environnement WordPress.

Réaliser les fonctionnalités principales en utilisant les hooks de WordPress.

WordPress offre deux mécanismes puissants : les « action hooks » et les « filter hooks », qui vous permettent d’intégrer votre code à des moments précis du processus principal du site ou de modifier des données. Comprendre et utiliser ces hooks est essentiel pour le développement de plugins.

Utiliser des crochets d’action pour ajouter des fonctionnalités

Les « action hooks » vous permettent d’exécuter du code personnalisé lorsque des événements spécifiques se produisent. Par exemple, nous pouvons créer une fonction qui ajoute automatiquement les informations de copyright en bas du contenu d’un article. Cela nécessite l’utilisation de ces hooks.the_contentLes filtres (qui sont essentiellement des « hooks » de filtrage, mais se utilisent de manière similaire aux « hooks » d’action) et…wp_enqueue_scriptsDes crochets d’action sont utilisés pour charger des ressources.

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

Tout d’abord, nous allons écrire une fonction.mfp_add_copyright_noticeEt l’installer sur…the_contentSur le crochet.

/ Ajouter une déclaration de droits d'auteur après le contenu de l'article
function mfp_add_copyright_notice( $content ) {
	if ( is_single() &amp;&amp; in_the_loop() &amp;&amp; is_main_query() ) {
		$copyright_text = '<p><em>Le droit d'auteur de cet article appartient à ce site web. Pour toute réutilisation, veuillez mentionner la source.</em></p>'fonction mfp_add_copyright_notice() : Ajoute un avis de droit d'auteur au contenu d'une page.  

add_filter( 'the_content', 'mfp_add_copyright_notice' );  

function mfp_add_copyright_notice() {  
   $$content = get_the_content();  
   if ( ! empty( $$content ) ) {  
      $$content .= $$copyright_text;  
   }  
   return $$content;  
}
add_filter( 'the_content', 'mfp_add_copyright_notice' );

Les conditions de contrôle garantissent que la déclaration de droits d’auteur n’apparaîtra que dans le cycle principal d’un article spécifique sur la page d’accueil, et n’affectera ni la page elle-même, ni le résumé de l’article, ni les fonctionnalités du backend.

Utiliser les hooks des filtres pour modifier les données.

Les hooks de filtre sont utilisés pour modifier tout type de données qui leur sont transmises. Supposons que nous voulions modifier certaines parties du titre d’un site web ; nous pourrions alors créer une fonction et l’ajouter aux hooks correspondants.wp_titleOu quelque chose de plus moderne…document_title_partsFiltre.

Lectures recommandées Détail complet du processus de développement de plugins pour WordPress : Guide pratique de l'initiation à la maîtrise

// 修改网站标题后缀
function mfp_modify_title_suffix( $title ) {
	if ( is_home() ) {
		$title['suffix'] = ' | 我的精彩博客';
	}
	return $title;
}
add_filter( 'document_title_parts', 'mfp_modify_title_suffix' );

Introduire des scripts et des styles en toute sécurité.

Pour ajouter des styles ou des interactions à un plugin depuis l’interface utilisateur, il est nécessaire d’utiliser les méthodes recommandées par WordPress.wp_enqueue_style()etwp_enqueue_script()Les fonctions, et viawp_enqueue_scriptsAppel de fonction par crochet (Hook function call).

// 注册并排队插件的前端样式
function mfp_enqueue_frontend_assets() {
	// 获取插件目录的URL
	$plugin_url = plugin_dir_url( __FILE__ );

// 排队一个CSS文件
	wp_enqueue_style(
		'mfp-frontend-style',
		$plugin_url . 'assets/css/frontend.css',
		array(),
		'1.0.0'
	);

// 排队一个JS文件,并依赖jQuery
	wp_enqueue_script(
		'mfp-frontend-script',
		$plugin_url . 'assets/js/frontend.js',
		array( 'jquery' ),
		'1.0.0',
		true // 在页脚加载
	);
}
add_action( 'wp_enqueue_scripts', 'mfp_enqueue_frontend_assets' );

Créer des pages de gestion et des options de configuration.

De nombreux plugins nécessitent de fournir des options de configuration aux utilisateurs. WordPress propose une API de configuration qui permet de créer des menus de gestion et des pages d'options de manière sûre et standardisée.

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.

Ajouter un menu de gestion

Tout d'abord, utilisezadd_action( ‘admin_menu’, … )Veuillez vous inscrire pour créer un nouvel élément de menu de gestion ou un sous-menu. Voici la fonction correspondante :mfp_create_admin_menuUn sous-menu sera ajouté sous le menu principal “ Paramètres ”.

// 创建插件管理菜单
function mfp_create_admin_menu() {
	add_options_page(
		‘我的插件设置’, // 页面标题
		‘我的插件’,     // 菜单标题
		‘manage_options’, // 权限要求
		‘mfp-settings’,   // 菜单slug
		‘mfp_settings_page_html’ // 用于输出页面内容的回调函数
	);
}
add_action( ‘admin_menu’, ‘mfp_create_admin_menu’ );

Créer une page de configuration et des champs

Ensuite, il est nécessaire de définir la fonction de rappel (callback function).mfp_settings_page_htmlAffichez le contenu de la page, puis utilisez l’API de configuration pour enregistrer un groupe de paramètres, une option ainsi que des champs spécifiques.

// Définir la sortie HTML de la page de paramètres
function mfp_settings_page_html() {
	// Vérifier les droits de l'utilisateur
	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
			// 输出设置字段、非ce等
			settings_fields( ‘mfp_options_group’ );
			do_settings_sections( ‘mfp-settings’ );
			submit_button( ‘保存设置’ );
			?>
		<input type="hidden" name="trp-form-language" value="fr"/></form>
	</div>
	<p> ‘mfp_field_copyright_text’ )
);
}
add_action( ‘admin_init’, ‘mfp_settings_init’ );

// Rendu du champ de texte de copyright
function mfp_field_copyright_text_html() {
	$options = get_option( ‘mfp_options’ );
	$value = $options[‘copyright_text’] ?? ‘Texte de copyright par défaut’; // Opérateur d'union vide pour PHP 7.0+
	?&gt; <p></p>
	&lt;?php
}
	<input type="“text”"
		   id="“mfp_field_copyright_text”"
		   name="“mfp_options[copyright_text]”"
		   value="“NO NUMERIC NOISE KEY" 1000”
		 class="“regular-text”">
	&lt;?php
}

Maintenant, vous pouvez utiliser ce que vous avez préparé auparavant.mfp_add_copyright_noticeDans une fonction, on utilise…get_option( ‘mfp_options’ )[‘copyright_text’]Obtenir dynamiquement le texte de configuration de l'utilisateur en arrière-plan permet de rendre les fonctionnalités du plugin personnalisables.

résumés

Cet article décrit en détail le processus complet pour développer un plugin fonctionnel pour WordPress à partir de zéro. Nous commençons par mettre en place l’environnement de développement et créer le fichier principal contenant les informations de tête standard, en soulignant l’importance de la protection contre les risques de sécurité. Ensuite, nous explorons en profondeur le cœur du développement de plugins WordPress : le mécanisme des hooks, y compris la manière d’utiliser les hooks d’action pour exécuter du code et les hooks de filtre pour modifier les données. Nous démontrons également comment charger de manière sécurisée les ressources frontales du site. Enfin, nous utilisons l’API des paramètres de WordPress pour créer une page de configuration professionnelle, permettant aux utilisateurs de personnaliser les fonctionnalités du plugin.

L’ensemble du processus de développement suit les normes de codage et les meilleures pratiques de WordPress, notamment l’utilisation de préfixes uniques pour les fonctions, la validation et l’encodage des données, ainsi que les bases pour prendre en charge l’internationalisation. Une fois que vous maîtrisez ces connaissances de base, vous pourrez étendre les fonctionnalités de votre plugin de manière illimitée en combinant différents « hooks », en créant des tables de base de données personnalisées, ou en développant des outils ou des codes courts.

FAQ Foire aux questions

Comment choisir un bon préfixe pour les fonctions et les classes d'un plugin ?

Toutes les fonctions, classes, variables et constantes globales des plugins doivent utiliser un préfixe unique afin d’éviter les conflits de noms avec d’autres plugins ou thèmes. Le préfixe est généralement composé de l’abréviation ou du nom simplifié du plugin. Par exemple, si le nom du plugin est “My First Plugin”, le préfixe pourrait être “MfP_”.mfp_Oumyfirstplugin_Il est essentiel de maintenir une cohérence.

Pourquoi faut-il absolument utiliser la fonction `wp_enqueue_script` pour ajouter des scripts ?

utiliserwp_enqueue_script()etwp_enqueue_style()C’est la méthode officiellement recommandée par WordPress. Elle permet de gérer correctement les dépendances de scripts (comme jQuery), d’éviter le chargement répété d’un même script, et autorise d’autres plugins ou thèmes à fonctionner correctement.wp_deregister_script()Pour supprimer ou remplacer votre script de manière sûre, utilisez-le directement.L’insertion de tags empêche de bénéficier de ces avantages de gestion et peut entraîner des conflits.

Quelles sont les principales règles de sécurité à respecter lors du développement de plugins ?

Le principe fondamental est le suivant : ne jamais faire confiance aux données saisies par les utilisateurs. Pour toutes les informations provenant des utilisateurs…$_GET$_POST$_REQUESTOu, vérifiez, nettoyez et échappez les données obtenues de la base de données. Lors de l'exportation vers le format HTML, utilisez .esc_html()esc_attr(); À utiliser pour l'exportation vers une URL.esc_url()Dans les requêtes SQL, il est essentiel d’utiliser…$wpdb->prepare()Effectuez des requêtes paramétrées pour éviter les injections SQL. Utilisez également…current_user_can()Vérifier les autorisations de l'utilisateur.

Comment ajouter un support international à mon plug-in ?

Tout d’abord, il faut configurer correctement les informations de en-tête du plugin.Text DomainetDomain PathEnsuite, dans tout le code, à l’endroit où des chaînes de caractères doivent être traduites, utilisez…()Pour effectuer la traduction de sortie, utilisez_e()Effectuer la traduction en mode écho (ou « translation en répétition »).( ‘Hello World’, ‘my-first-plugin’ )Enfin, utilisez un outil comme Poedit pour analyser le code et générer….potFichiers de modèle, et création de versions pour différentes langues..poet.moVeuillez transférer le fichier et le placer à l'endroit indiqué./languagesDans le répertoire.