Aller au contenu

Comment créer un plugin WordPress

Créer un plugin WordPress ne demande qu'un dossier et un fichier PHP avec un en-tête de quelques lignes, placés dans wp-content/plugins. C'est le bon endroit pour ranger vos petits bouts de code (fonctions, shortcodes, réglages) plutôt que dans le fichier functions.php du thème. Cette page montre le squelette minimal, les règles de base à respecter et les ressources officielles pour aller plus loin.

Plugin ou functions.php du thème ?

Beaucoup de tutoriels proposent de coller du code dans le fichier functions.php du thème. Cela fonctionne, mais ce code est lié au thème : si vous changez de thème, il disparaît, et si vous modifiez directement le thème parent, une mise à jour l'écrase (c'est tout l'intérêt d'un thème enfant).

La règle simple :

  • ce qui concerne l'apparence (gabarits, styles propres au thème) va dans le thème enfant ;

  • ce qui concerne le fonctionnement du site (un shortcode, un type de contenu, une redirection, une modification de l'administration) va dans un plugin, qui survit à un changement de thème.

Pour quelques lignes seulement, un plugin de gestion de snippets comme WPCode évite même de créer des fichiers. Dès que le code grossit ou doit être versionné, un vrai plugin est plus propre.

Le plugin minimal : un dossier, un fichier, un en-tête

D'après le manuel officiel des plugins, la démarche tient en trois étapes :

  1. Dans wp-content/plugins, créez un dossier au nom de votre plugin, par exemple monsite-ajouts.

  2. Dans ce dossier, créez un fichier PHP du même nom : monsite-ajouts.php.

  3. Placez en haut de ce fichier un commentaire d'en-tête. Seul le champ Plugin Name est obligatoire.

Voici un exemple complet et fonctionnel :

PHP28 lignes
<?php
/**
 * Plugin Name:       Mon site - ajouts
 * Description:       Petits ajouts de fonctionnement pour mon site.
 * Version:           1.0.0
 * Requires at least: 6.5
 * Requires PHP:      7.4
 * Author:            Votre nom
 * License:           GPL v2 or later
 * Text Domain:       monsite-ajouts
 */

// Empêche l'accès direct au fichier.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

// Action : ajoute une mention dans le pied de page.
function monsite_mention_pied_de_page() {
	echo '<p class="monsite-mention">Merci de votre visite.</p>';
}
add_action( 'wp_footer', 'monsite_mention_pied_de_page' );

// Filtre : raccourcit les extraits automatiques à 30 mots.
function monsite_longueur_extrait( $longueur ) {
	return 30;
}
add_filter( 'excerpt_length', 'monsite_longueur_extrait' );

Enregistrez, puis allez dans Extensions dans l'administration : votre plugin apparaît dans la liste, avec son nom et sa description. Il ne reste qu'à l'activer.

Comprendre les hooks : actions et filtres

Un plugin ne modifie jamais les fichiers de WordPress : il se branche sur des points d'accroche, les hooks, prévus par WordPress.

  • Une action permet d'exécuter votre code à un moment précis (wp_footer : au moment d'afficher le pied de page ; init : au chargement de WordPress). On l'utilise avec add_action().

  • Un filtre permet de modifier une valeur avant son utilisation (ici, la longueur des extraits). On l'utilise avec add_filter(), et la fonction doit toujours retourner une valeur.

La quasi-totalité du développement de plugins consiste à choisir le bon hook et à y accrocher une fonction. Les shortcodes reposent sur le même principe, avec la fonction add_shortcode().

Les bonnes pratiques à adopter dès le début

Le manuel officiel insiste sur quelques règles simples :

  • Préfixez tout : fonctions, classes, options, constantes. Le manuel recommande un préfixe d'au moins 4 lettres, idéalement 5, propre à votre plugin (monsite_ dans l'exemple), pour éviter les conflits avec d'autres plugins.

  • Bloquez l'accès direct aux fichiers avec la vérification de ABSPATH montrée plus haut.

  • Un seul fichier porte l'en-tête dans le dossier du plugin ; les autres fichiers sont inclus depuis celui-ci.

  • Utilisez les API de WordPress (Options, HTTP, Plugin) plutôt que de tout réécrire.

  • Prévoyez l'installation et la désinstallation : la fonction register_activation_hook() sert à préparer le terrain (options par défaut, par exemple), et un fichier uninstall.php à nettoyer ce que le plugin a créé.

  • Développez avec le mode débogage activé (WP_DEBUG à true dans wp-config.php) sur un site de test, jamais directement sur le site en ligne.

Le champ d'en-tête Requires Plugins, disponible depuis WordPress 6.5, permet aussi de déclarer qu'un plugin a besoin d'un autre plugin pour fonctionner (par exemple une extension WooCommerce).

Les champs d'en-tête utiles

Champ

Rôle

Plugin Name

Nom affiché dans la liste des extensions (obligatoire)

Description

Courte description affichée sous le nom

Version

Numéro de version de votre plugin

Requires at least

Version minimale de WordPress

Requires PHP

Version minimale de PHP

Author

Auteur du plugin

License

Licence (compatible GPLv2 ou ultérieure pour diffuser le plugin)

Text Domain

Identifiant utilisé pour les traductions

Requires Plugins

Plugins dont le vôtre dépend, séparés par des virgules

Où apprendre la suite

Pour choisir un plugin existant avant de coder le vôtre, la rubrique Plugins WordPress présente des comparatifs par besoin.

Auteur : Jean-Noël Mathonnet

Commentaires

Pas encore de commentaire. Soyez le premier !

Laisser un commentaire

Lorsque vous achetez via des liens sur ce site, nous pouvons toucher une commission d'affiliation. + d'infos