Plongez dans l’univers avancé de WordPress avec notre lexique dédié aux développeurs.
Ce glossaire exhaustif explore les concepts, les techniques et les outils essentiels pour les développeurs WordPress chevronnés.
WordPress est le CMS le plus utilisé au monde, il répond donc à des besoins complexes avec une grande communauté de développeurs.
Son architecture PHP et l’utilisation de base de données en fait un framework se prêtant à des projets exigeants.
Les évolutions récentes comme Gutenberg, WP Graph QL, le découplage frontend/backend ouvrent de nouvelles opportunités.
WordPress, c’est avant tout une grande flexibilité et liberté pour les développeurs avertis.
Lexique alphabétique des termes techniques WordPress
A
- Action : Un type de hook qui permet d’exécuter une fonction personnalisée à un moment spécifique du cycle d’exécution de WordPress (comme
initousave_post), sans modifier les données. - API « Abilities » : API introduite dans WordPress 6.9 et enrichie en 7.1, elle facilite la découverte, l’exposition, la validation et l’intégration des capacités (abilities) avec des clients externes. Elle ajoute des fonctionnalités de filtrage, des crochets liés au cycle de vie et un indicateur unifié d’exposition publique.
- API « SVG Icon » (nouveauté WP 7.1) : Nouvelle API standardisée permettant d’enregistrer et de restituer des icônes personnalisées au format SVG dans WordPress, offrant une alternative moderne aux polices d’icônes.
- API des Widgets : L’interface de programmation qui permet d’enregistrer, de gérer et d’afficher des zones de widgets dans les thèmes, offrant une personnalisation simplifiée de l’agencement des contenus.
B
- Bedrock : Un boilerplate moderne pour projets WordPress qui structure le code en utilisant Composer, sépare les fichiers de configuration et intègre des variables d’environnement pour un workflow plus professionnel.
- Blockstudio : Un outil de développement qui simplifie la création de blocs personnalisés pour l’éditeur Gutenberg en utilisant une configuration PHP déclarative plutôt que du JavaScript complexe.
- Boucle de requête : La structure PHP (
while ( have_posts() ) : the_post();) qui itère sur les articles ou contenus retournés par une requête WordPress (commeWP_Query) pour les afficher dans le template.
C
- Customizer : L’interface d’administration en temps réel qui permet aux utilisateurs de modifier l’apparence de leur site (couleurs, mise en page, widgets) avec un aperçu instantané, et qui expose une API pour les développeurs.
D
- DataViews / DataForm (nouveauté WP 7.1) : API en maturation qui permettent de personnaliser les interfaces basées sur les données dans l’éditeur de site. Elles offrent un contrôle sur les vues, les mises en page et les formulaires disponibles dans les contextes d’édition.
- Découplage : L’architecture où WordPress est utilisé uniquement comme backend (API de gestion de contenu) tandis qu’une application frontend distincte (ex: React, Next.js) assure le rendu et l’interaction utilisateur.
- Design Tokens (nouveauté WP 7.1) : Éléments de design fondamentaux (couleurs, typographie, espacements) qui servent de base au système de design de WordPress, garantissant une cohérence visuelle entre les interfaces.
- Dev Hub (remplace le codex) : La nouvelle documentation officielle de WordPress pour les développeurs, remplaçant l’ancien Codex, avec une organisation plus claire, des exemples de code et un système de recherche amélioré.
F
- Filtre : Un type de hook qui intercepte une donnée avant son affichage ou son enregistrement, permettant de la modifier et de la retourner (ex: modifier
the_contentouexcerpt_length). - Frontity : Un framework React spécialisé dans la création de sites web découplés avec WordPress, qui gère le rendu côté serveur (SSR) pour un SEO optimal.
G
- Generate Press : Un thème WordPress léger, hautement performant et axé sur l’accessibilité, souvent utilisé comme starter ou thème parent, avec une intégration poussée des hooks et du Customizer.
- Gutenberg (projet éditorial) : L’éditeur de blocs de WordPress, également nommé « Gutenberg ». Il est constamment amélioré.
H
- Hiérarchie des templates : Le système de fichiers (ex:
single.php,page.php,archive.php,404.php) qui détermine quel fichier template est utilisé pour afficher un type de contenu spécifique, selon un ordre de priorité prédéfini. - Hook : Mécanisme fondamental du développement WordPress qui permet d’« accrocher » son propre code à des moments précis de l’exécution de WordPress ou de modifier des données.
I
- Iframe de l’éditeur (nouveauté WP 7.1) : WordPress 7.1 finalise la transition vers un éditeur de publications basé sur une iframe, y compris pour les sites utilisant des boîtes méta héritées. Cela offre un environnement d’édition plus cohérent et isolé.
L
- LumberJack : Un package de la suite Roots qui simplifie la gestion des assets (CSS, JavaScript) en utilisant des compilateurs modernes comme Laravel Mix et en intégrant un système de templating avancé.
M
- Metabox : Une boîte personnalisable dans l’éditeur d’article (ou de page) permettant d’ajouter des champs de données supplémentaires (comme des textes, sélecteurs ou images) associés à un type de contenu.
- Modèle (ou Template) : Un fichier PHP qui structure l’affichage d’un type de contenu spécifique en intégrant les balises du thème et les appels à des fonctions WordPress, comme
get_header()etthe_content(). - Mu-plugin : Un plugin « Must-Use » qui, placé dans le dossier
/mu-plugins/, est automatiquement activé et ne peut pas être désactivé depuis l’interface admin, idéal pour des fonctionnalités critiques.
R
- React Press : (Souvent associé à WP React Press) Un starter ou outil qui facilite l’intégration de React dans l’écosystème WordPress, notamment pour créer des interfaces d’administration ou des applications découplées.
- Roots : Une célèbre boîte à outils de développement (incluant Bedrock, Sage, Trellis) qui modernise le workflow WordPress avec des pratiques issues de frameworks comme Laravel (MVC, compilation d’assets).
- REST API (ou WP API Rest) : L’interface standardisée qui expose les données de WordPress (articles, pages, utilisateurs) au format JSON, permettant d’interagir avec le site via des requêtes HTTP depuis n’importe quel client (frontend, application mobile).
S
- Sage : Un thème starter avancé de Roots qui suit le pattern MVC, utilise Blade comme moteur de templates, et intègre la compilation d’assets avec Webpack ou Laravel Mix.
- Starter theme : Un thème minimaliste et vierge (comme _underscores ou Sage) qui fournit une base solide et des bonnes pratiques, conçu pour être personnalisé et étendu par les développeurs.
- Schema (ou Template part) : Des fragments de templates réutilisables (ex:
header.php,footer.php,loop.php) qui sont inclus dans les fichiers de la hiérarchie viaget_template_part(), évitant la duplication de code. - Styles globaux (fonctionnalité évolutive) : Système de style permettant de configurer les apparences des blocs et des thèmes. WP 7.1 enrichit cet outil avec des variations adaptatives, des fenêtres d’affichage configurables, des états d’interaction supplémentaires et la prise en charge des ombres portées sur le texte.
V
- View Config (nouveauté WP 7.1) : Nouvelle fonctionnalité de l’API DataViews permettant de contrôler les écrans de l’éditeur de site et de filtrer les vues disponibles.
W
- WordPressCS : Un ensemble de règles de codage (coding standard) pour PHP_CodeSniffer, garantissant la conformité du code avec les normes de WordPress (WordPress Core, Extra, VIP), essentiel pour maintenir une base de code saine.
- WP REST API Controller : La classe PHP
WP_REST_Controllerqui sert de base pour créer des endpoints personnalisés et structurés, en gérant les permissions, la validation et la sérialisation des données. - WPGraphQL : Une extension qui ajoute un endpoint GraphQL à WordPress, permettant aux développeurs de requêter précisément les données nécessaires en une seule appel, alternative moderne à la REST API.
- WP_Query : La classe PHP centrale de WordPress qui permet de construire et d’exécuter des requêtes complexes sur la base de données (posts, pages, taxonomies, métadonnées) pour créer des boucles personnalisées.
FAQ Développeur WordPress
1. Quelle est la différence fondamentale entre un hook d’action et un hook de filtre dans WordPress ?
C’est la question la plus importante pour maîtriser l’architecture de WordPress.
- Action (Action Hook) : Permet d’exécuter votre code personnalisé à un moment précis du cycle de vie de WordPress. Vous l’utilisez pour faire quelque chose, comme ajouter une feuille de style, envoyer un email après la publication d’un article, ou modifier le comportement de la page d’administration.
- Fonction clé :
add_action() - Exemple :
add_action( 'wp_enqueue_scripts', 'mon_theme_ajouter_css' );
- Fonction clé :
- Filtre (Filter Hook) : Permet de modifier une donnée avant qu’elle ne soit affichée ou enregistrée dans la base de données. Vous l’utilisez pour transformer une valeur, comme ajouter du HTML au contenu d’un article, modifier la longueur d’un extrait, ou changer le titre d’une page.
- Fonction clé :
add_filter() - Exemple :
add_filter( 'excerpt_length', 'modifier_longueur_extrait', 10 );
- Fonction clé :
En résumé : Une action exécute du code (effet de bord), un filtre modifie une donnée et doit toujours la retourner.
2. Comment créer une requête personnalisée avec WP_Query et en quoi est-ce plus performant que d’utiliser query_posts() ?
WP_Query est la classe PHP permettant d’effectuer des requêtes complexes et personnalisées sur la base de données.
- La bonne pratique : Instancier un nouvel objet
WP_Querypour créer une « boucle secondaire
$ma_requete = new WP_Query( array(
'post_type' => 'product',
'posts_per_page' => 6,
'orderby' => 'date',
'order' => 'DESC',
'tax_query' => array( // Exemple de requête avancée par taxonomie
array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => 'meilleurs-ventes',
),
),
) );
if ( $ma_requete->have_posts() ) :
while ( $ma_requete->have_posts() ) : $ma_requete->the_post();
// Afficher le contenu
endwhile;
wp_reset_postdata(); // TRÈS IMPORTANT : restaure la requête principale
endif;
- Pourquoi ne jamais utiliser
query_posts()?query_posts()modifie directement la requête principale et la remplace. C’est une pratique dangereuse qui entraîne des conflits avec d’autres plugins, des problèmes de pagination et ralentit les performances. Utilisez toujoursnew WP_Query()pour vos boucles secondaires etpre_get_postspour modifier la requête principale.
3. Qu’est-ce que le découplage (Headless WordPress) et quels sont ses avantages et inconvénients pour un projet ?
Le découplage (ou Headless) consiste à utiliser WordPress uniquement comme backend (API de gestion de contenu) et à utiliser un autre outil (framework JavaScript comme React, Vue.js ou Next.js) pour le frontend (affichage).
- Avantages :
- Performances : Le site est généralement plus rapide, car le rendu est assuré par des technologies modernes.
- Flexibilité : Vous pouvez créer des expériences utilisateur riches et interactives, surtout si vous devez alimenter des applications mobiles ou des kiosques.
- Sécurité : La couche frontend étant séparée, elle est moins exposée aux vulnérabilités du backend WordPress.
- Inconvénients :
- Complexité : Nécessite des compétences en JavaScript moderne et en gestion d’API, ce qui alourdit le projet.
- Preview : La gestion des « aperçus » des articles (prévisualisation avant publication) devient plus difficile à implémenter.
- SEO : Bien que gérable (via le SSR de Next.js par exemple), le SEO est plus difficile à configurer qu’avec un thème WordPress classique.
Conclusion : Le découplage est idéal pour les grands projets, les applications web complexes ou lorsque le contenu doit être diffusé sur de multiples canaux (site web, app mobile, affichage dynamique). Pour un site vitrine simple, un thème traditionnel reste plus pertinent.
4. Comment créer un endpoint personnalisé dans la REST API de WordPress ?
C’est essentiel pour interagir avec votre site via des applications externes ou du JavaScript.
php
// Dans votre fichier functions.php ou un plugin personnalisé
add_action( 'rest_api_init', function () {
register_rest_route( 'mon-plugin/v1', '/derniers-articles/', array(
'methods' => 'GET',
'callback' => 'mon_plugin_recuperer_derniers_articles',
'permission_callback' => '__return_true' // Rendre public (ou définir une vérification de droits)
) );
} );
function mon_plugin_recuperer_derniers_articles( $request ) {
// Paramètres de la requête
$per_page = $request->get_param( 'per_page' ) ?: 5;
$args = array(
'post_type' => 'post',
'posts_per_page' => $per_page,
'post_status' => 'publish'
);
$articles = get_posts( $args );
// Formater la réponse
if ( empty( $articles ) ) {
return new WP_REST_Response( 'Aucun article trouvé', 404 );
}
// Préparer les données à retourner (souvent en JSON)
$data = array();
foreach ( $articles as $article ) {
$data[] = array(
'id' => $article->ID,
'titre' => $article->post_title,
'lien' => get_permalink( $article->ID ),
'extrait' => wp_trim_words( $article->post_content, 20 )
);
}
return new WP_REST_Response( $data, 200 );
}
Ce code crée une URL de type https://votresite.com/wp-json/mon-plugin/v1/derniers-articles qui retournera les derniers articles en JSON.
5. Quelle est la différence entre un plugin classique et un « Must-Use » (MU) plugin ?
| Critère | Plugin Classique | MU-Plugin (Must-Use) |
|---|---|---|
| Emplacement | /wp-content/plugins/ | /wp-content/mu-plugins/ |
| Activation | Doit être activé manuellement depuis l’admin WordPress. | Activé automatiquement et en permanence. L’utilisateur ne peut pas le désactiver. |
| Cas d’usage | Fonctionnalités standards (SEO, sécurité, formulaires). | Fonctionnalités critiques ou propres au site qui doivent toujours être actives (ex: code d’un thème « parent » ou d’une configuration d’entreprise). |
| Visibilité | Apparaît dans la liste des extensions de l’admin. | Apparaît dans une section dédiée « Plugins Must-Use » mais ne peut pas être désactivé. |
En pratique, on utilise les MU-plugins pour du code « maison » qui ne doit jamais être désactivé, même par un client ou un administrateur distrait.