
📋 Aide-mémoire WordPress complet
Vous avez ouvert functions.php et vous ne savez plus comment raccrocher la barre latérale? Cela arrive à tous ceux qui codent un thème WordPress à la main. Vous avez besoin d’une seule page sous les yeux, pas de dix onglets developer.wordpress.org.
Vous trouverez ici l’essentiel du développement WordPress: 13 fichiers de template et la hiérarchie qui les sélectionne, la Boucle de base, les balises d’inclusion et les paramètres de bloginfo(), puis les hooks et les filtres, les balises conditionnelles, l’enqueue des scripts, les shortcodes, WP_Query, l’échappement des données, l’API REST et les commandes WP-CLI. Tous les exemples de code fonctionnent. Gardez cet onglet ouvert pendant le développement et vérifiez au fur et à mesure.
💡 Aperçu rapide:
- Mettez cette page en favori et gardez-la ouverte dans un onglet séparé pendant la construction de votre thème.
- Commencez par la section «Anatomie d’un thème»: créez les fichiers du thème à partir de la liste avant d’écrire le code.
- Copiez la Boucle WordPress de base dans
index.phpet enveloppez-la avec les balises d’inclusion pour l’en-tête, la barre latérale et le pied de page. - Insérez les balises
bloginfo()etget_bloginfo()du tableau directement dans les templates, en vérifiant la colonne «Ce qu’elle affiche». - Avant de publier, passez en revue les règles de
style.css: validez le CSS, minifiez-le et ajoutez des styles d’impression. - Plus bas dans la page, la référence: hiérarchie des templates, hooks et filtres, balises conditionnelles, enqueue des scripts, shortcodes,
WP_Query, échappement, API REST et WP-CLI.
Anatomie d’un thème WordPress

Un thème WordPress est un ensemble de fichiers PHP unis par une logique commune et régis par la hiérarchie des templates. Le composant clé: style.css, qui gère le style visuel et sert simultanément d’identifiant du thème dans l’administration. Mais la fondation de tout thème classique, ce sont les templates PHP: chacun gère sa propre section de la page et est appelé dans l’ordre défini par la hiérarchie WordPress.
Pour créer un thème standard, vous avez besoin des fichiers suivants, treize au total, chacun couvrant une zone spécifique du site:
- header.php, la section
<head>et le haut de la page: métadonnées, titre du site, inclusion destyle.css, balise d’ouverture<body>. - index.php, le template principal, point d’entrée. Il assemble les autres fichiers en une page unifiée via les balises d’inclusion. Si un template spécialisé n’existe pas, WordPress se replie sur
index.php. - sidebar.php, la barre latérale: widgets, catégories, recherche, menu secondaire.
- footer.php, le pied de page: copyright, liens sociaux, scripts d’analyse, balises fermantes
</body></html>. - page.php, template pour les pages (contenu statique, «À propos», «Contact»).
- single.php, template pour un article de blog individuel.
- comments.php, bloc de commentaires et formulaire de soumission.
- 404.php, page d’erreur 404. Si ce fichier est absent, WordPress affiche un message système par défaut, ce qui est moins bon pour le visiteur.
- search.php, template pour les résultats de recherche.
- searchform.php, formulaire de recherche (dans les thèmes classiques; les thèmes modernes utilisent souvent un widget).
- archive.php, template pour les archives: catégories, étiquettes, archives par date.
- functions.php, le cœur fonctionnel du thème: hooks personnalisés, enqueue des scripts et des styles, enregistrement des menus, zones de widgets, types de publication personnalisés. Tout ce qui ajoute des fonctionnalités au thème se trouve ici.
- style.css, le seul fichier non PHP de la liste, mais sans lui le thème n’existe pas: il stocke l’en-tête du thème et définit l’apparence du site.
Vous pouvez vous en sortir avec moins de templates, par exemple index.php + style.css forment déjà un thème minimal. Mais pour un site complet, il est préférable de conserver les treize: chaque fichier est adapté à sa propre tâche, et WordPress choisit lui-même le bon selon la hiérarchie. Un index.php typique ressemble à ceci:
1 <?php get_header(); ?> 2 3 <!-- Main content, including the Loop --> 4 5 <?php get_sidebar(); ?> 6 <?php get_footer(); ?>
Passons au fragment de code le plus important, sans lequel aucun article ne s’affiche.
La Boucle WordPress
La Boucle est le mécanisme central d’affichage du contenu. Sans elle, vous devriez coder manuellement l’affichage de chaque article et de chaque page dans le template du thème. La Boucle fait exactement ce que son nom promet: elle parcourt tous les articles correspondant à la requête en cours et applique à chacun le balisage HTML/PHP que vous avez spécifié.
Syntaxe de base de la Boucle:
1 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2 <!-- HTML markup and template tags for each post --> 3 <?php endwhile; endif; ?>
have_posts() vérifie s’il y a des articles à afficher. Si c’est le cas, the_post() initialise le pointeur interne de WordPress sur l’article en cours, après quoi des dizaines de balises de template deviennent disponibles à l’intérieur de la Boucle: the_title() pour le titre, the_content() pour le texte de l’article, the_permalink() pour le lien, the_excerpt() pour l’extrait et bien d’autres.
La Boucle est généralement placée dans index.php pour afficher une liste d’articles, mais rien ne vous empêche de l’utiliser dans single.php, page.php ou archive.php, la logique est la même, seul le contexte diffère. À l’intérieur de la Boucle, ajoutez les conteneurs HTML et les balises PHP de votre choix, WordPress les appliquera à chaque article tour à tour.
Exemple pratique, affichage du titre et de la date de chaque article:
1 <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> 2 <article> 3 <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2> 4 <time><?php echo get_the_date(); ?></time> 5 </article> 6 <?php endwhile; endif; ?>
Voyons maintenant comment la Boucle interagit avec le reste du thème, via les balises d’inclusion.
Balises d’inclusion de template
Les balises d’inclusion sont des fonctions PHP qui chargent le contenu d’un fichier de thème dans un autre. Elles forment le squelette d’un index.php typique: en-tête, contenu, barre latérale, pied de page. Quatre fonctions de base:
<?php get_header(); ?>, inclutheader.php. Généralement la première ligne dansindex.phpet tout autre template qui a besoin d’un en-tête.<?php get_sidebar(); ?>, inclutsidebar.php. Si la barre latérale n’est pas nécessaire, supprimez simplement l’appel.<?php get_footer(); ?>, inclutfooter.php. Toujours à la fin du template, ferme la page.<?php comments_template(); ?>, inclutcomments.php. Placé danssingle.php, après l’affichage du contenu de l’article.
Ces quatre fonctions recherchent les fichiers dans le dossier du thème actif. Si le fichier n’existe pas, WordPress n’affiche tout simplement rien (sauf pour get_header() et get_footer(), dont l’absence cassera la mise en page).
Le niveau suivant, les balises qui ne se contentent pas d’inclure des fichiers mais extraient des données de la base de données.
Les balises bloginfo

Les balises bloginfo() extraient les informations sur le site depuis la base de données WordPress, les mêmes informations que vous renseignez dans Réglages → Général et dans le profil utilisateur. La fonction retourne une chaîne et l’affiche immédiatement à l’écran. Les paramètres les plus couramment utilisés:
Paramètre | Ce qu’elle affiche |
|---|---|
| Titre du site |
| URL du site |
| Slogan (description du site) |
| Jeu de caractères (UTF-8 par défaut) |
| URL du |
| Version de WordPress installée |
| Langue du site |
| URL du flux RSS (RSS 0.92) |
| URL du flux RSS (RSS 2.0) |
Ce n’est que la partie émergée de l’iceberg, la liste complète des paramètres se trouve dans la documentation WordPress.
Get_bloginfo(), quand vous devez stocker plutôt qu’afficher
Pour les cas où l’information du site doit être utilisée dans le code plutôt que simplement affichée sur la page, utilisez la fonction get_bloginfo():
1 <?php $info = get_bloginfo( $show, $filter ); ?>
$show, le mot-clé. Les valeurs supportées sont'name'(titre),'url'(adresse),'description'(slogan),'admin_email'(adresse email de l’administrateur) et d’autres; liste complète dans la documentation.$filter, le mode de filtrage:'raw'(valeur «telle quelle», par défaut) ou'display'(la valeur passe parwptexturize(), convertit les guillemets, tirets, caractères).
Exemple: obtenir la description du site et l’afficher avec un préfixe:
1 <?php $site_description = get_bloginfo( 'description' ); ?> 2 <?php echo 'Your site tagline: ' . esc_html( $site_description ); ?>
Résultat: «Your site tagline: Best premium WordPress themes».
En plus de bloginfo, WordPress dispose d’un système complet de template tags: balises générales, balises d’auteur, balises de miniature, balises de catégorie, balises de lien, qui fonctionnent toutes à l’intérieur comme à l’extérieur de la Boucle, et leurs combinaisons vous donnent un contrôle total sur l’affichage du contenu.
Feuille de style du thème
style.css remplit deux rôles. Premièrement, l’identification: l’en-tête tout en haut du fichier indique à WordPress le nom du thème, l’auteur, la version, la licence. Deuxièmement, l’aspect visuel: toutes les règles CSS qui contrôlent l’apparence du site. Un en-tête standard se présente ainsi:
1 /* 2 Theme Name: Theme Name 3 Theme URI: https://www.example.com/theme 4 Author: Your Name 5 Author URI: https://www.example.com/ 6 Description: Responsive WordPress theme with support for... 7 Version: 1.0 8 License: GNU General Public License v2 or later 9 License URI: http://www.gnu.org/licenses/gpl-2.0.html 10 Tags: responsive, two-columns, right-sidebar, custom-header 11 Text Domain: mythemename 12 */
Bonnes pratiques lorsque vous travaillez avec style.css:
- Suivez les normes de codage CSS de WordPress, un style cohérent simplifie la maintenance.
- Validez le CSS via le validateur W3C.
- Minifiez le CSS en production, mais conservez une source lisible pour le développement.
- Ajoutez des styles d’impression (
@media print), de nombreux lecteurs impriment les articles. - Stylisez tous les éléments HTML standards susceptibles d’apparaître dans le contenu d’un article.
Hiérarchie des templates WordPress
Pour chaque requête, WordPress décide lui-même quel fichier PHP du thème inclure, c’est la hiérarchie des templates. Une règle: du fichier le plus spécifique au plus général, avec index.php comme dernier recours pour chaque branche. Connaître cet ordre lève la question «pourquoi ma modification de single.php ne s’affiche-t-elle pas sur la page de catégorie».
1 Single post → single-{post_type}-{slug}.php → single-{post_type}.php → single.php → singular.php → index.php 2 Page → {template from editor}.php → page-{slug}.php → page-{id}.php → page.php → singular.php → index.php 3 Category → category-{slug}.php → category-{id}.php → category.php → archive.php → index.php 4 Archive → archive-{post_type}.php → archive.php → index.php 5 Search → search.php → index.php 6 404 error → 404.php → index.php 7 Front page → front-page.php → home.php → index.php
WordPress prend le premier fichier existant de gauche à droite. Ainsi, single-product.php remplacera single.php uniquement pour les entrées du type de publication product, sans toucher au reste.
Hooks: actions et filtres
Les hooks sont des points d’extension de WordPress: ils vous permettent de vous greffer sur les fonctionnalités du cœur sans en modifier les fichiers. Les actions exécutent un effet de bord (mettre un script en file d’attente, envoyer un email), les filtres reçoivent une valeur, la modifient et doivent la retourner. Un return oublié dans un filtre est la cause la plus fréquente de contenu vide.
1 // Registration 2 add_action( 'hook_name', 'callback', 10, 1 ); // priority, number of arguments 3 add_filter( 'hook_name', 'callback', 10, 1 ); 4 5 // Execution (in core or your code) 6 do_action( 'hook_name', $arg ); // action: returns nothing 7 apply_filters( 'hook_name', $value, $arg ); // filter: RETURNS value 8 9 // Removal (priority must match the one used when adding) 10 remove_action( 'hook_name', 'callback', 10 );
Exemple, ajouter un paragraphe à la fin de chaque article:
1 add_filter( 'the_content', 'my_append_note', 20 ); 2 function my_append_note( $content ) { 3 return $content . '<p>Thanks for reading!</p>'; // without return content disappears 4 }
Hooks clés du thème:
after_setup_theme, déclarer la prise en charge de fonctionnalités (add_theme_support()), les menus, les tailles de vignettes.wp_enqueue_scripts, le seul endroit correct pour mettre en file d’attente le CSS et le JS frontend.init, initialisation précoce: enregistrer les types de publication et les shortcodes.the_content, filtrer le HTML de l’article avant l’affichage.
Une priorité plus basse s’exécute plus tôt (10 par défaut). Pour qu’une fonction de rappel reçoive plus d’un argument, augmentez le quatrième paramètre accepted_args.
Balises conditionnelles
Les balises conditionnelles sont des fonctions qui retournent true ou false selon la page actuellement ouverte. Elles construisent la logique du type «afficher la barre latérale ici, mais pas sur la page 404».
1 is_home() // blog post feed 2 is_front_page() // site front page 3 is_single() // single post 4 is_page() // single page 5 is_singular() // any single post/page/CPT 6 is_archive() // any archive 7 is_category() // category archive 8 is_search() // search results page 9 is_404() // 404 error page 10 is_user_logged_in() // user is logged in 11 is_admin() // request is in admin (NOT "user is administrator")
Piège principal: les balises conditionnelles de requête (is_single, is_page, is_home et autres) ne fonctionnent qu’une fois la requête principale constituée, c’est-à-dire à l’intérieur des fichiers de template et de la Boucle, ou à partir du hook template_redirect. Les appeler trop tôt dans functions.php ou sur init est prématuré: WordPress émettra _doing_it_wrong() et retournera un résultat incorrect. Les exceptions sont is_admin() et is_user_logged_in(), qui ne dépendent pas de la requête et sont disponibles plus tôt. Et rappelez-vous: is_admin() vérifie le contexte (admin contre frontend), pas le rôle; pour le rôle, utilisez current_user_can( 'manage_options' ).
Mise en file d’attente des scripts et styles
La tentation d’écrire <link> et <script> directement dans header.php est forte, mais c’est une erreur: vous perdez la gestion des dépendances, le versioning pour l’invalidation du cache, les stratégies defer/async et la protection contre le double chargement (deux extensions peuvent facilement mettre jQuery en file d’attente deux fois). La voie correcte est la file d’attente de WordPress sur le hook wp_enqueue_scripts.
1 add_action( 'wp_enqueue_scripts', 'my_theme_assets' ); 2 function my_theme_assets() { 3 // Theme style with version from style.css header 4 wp_enqueue_style( 5 'my-theme', 6 get_stylesheet_uri(), 7 array(), 8 wp_get_theme()->get( 'Version' ) 9 ); 10 11 // Script with dependency and modern syntax (WP 6.3+) 12 wp_enqueue_script( 13 'my-app', 14 get_theme_file_uri( 'assets/js/app.js' ), 15 array( 'jquery' ), // dependencies 16 '1.0.0', // version → cache busting 17 array( 18 'in_footer' => true, 19 'strategy' => 'defer', 20 ) 21 ); 22 }
À partir de WordPress 6.3, le dernier paramètre de wp_enqueue_script() est un tableau $args (in_footer, strategy), bien que l’ancienne forme avec le booléen true pour le pied de page fonctionne toujours. Pour le frontend, utilisez wp_enqueue_scripts, pour l’admin, utilisez admin_enqueue_scripts, pour la page de connexion, utilisez login_enqueue_scripts.
Shortcodes
Les shortcodes transforment une courte saisie entre crochets en HTML arbitraire, pratique pour les boutons, les galeries et les formulaires à l’intérieur du contenu. Le gestionnaire doit retourner une chaîne, pas l’afficher via echo, sinon le résultat «sautera» au début de la page.
1 add_shortcode( 'btn', 'my_button_shortcode' ); 2 function my_button_shortcode( $atts, $content = null, $tag = '' ) { 3 $a = shortcode_atts( 4 array( 'url' => '#', 'label' => 'Button' ), 5 $atts, 6 $tag 7 ); 8 return sprintf( 9 '<a class="btn" href="%s">%s</a>', 10 esc_url( $a['url'] ), // escape on output 11 esc_html( $a['label'] ) 12 ); 13 } 14 // Usage in post: [btn url="https://example.com" label="Buy"]
shortcode_atts() superpose les attributs utilisateur par-dessus les valeurs par défaut. Si vous devez exécuter des shortcodes à l’intérieur d’une chaîne ou d’un template, enveloppez-la dans do_shortcode(), mais pour appeler votre propre fonction, appelez-la directement, sans intermédiaire.
WP_Query et requêtes personnalisées
WP_Query est la classe pour toute sélection d’articles: actualités récentes dans la barre latérale, collection de catégorie, flux de type de publication personnalisé. Après votre boucle, appelez toujours wp_reset_postdata(), sinon les balises de template plus bas dans la page obtiendront le mauvais article.
1 $q = new WP_Query( array( 2 'post_type' => 'post', 3 'posts_per_page' => 5, 4 'category_name' => 'news', 5 'orderby' => 'date', 6 'order' => 'DESC', 7 ) ); 8 9 if ( $q->have_posts() ) { 10 while ( $q->have_posts() ) { 11 $q->the_post(); 12 the_title( '<h3>', '</h3>' ); 13 } 14 wp_reset_postdata(); // restore global $post 15 }
Pour modifier la requête de la page principale (par exemple, le nombre d’articles sur la page d’accueil), n’utilisez pas la fonction obsolète query_posts(), elle exécute une requête de base de données supplémentaire et casse la pagination. L’approche correcte est le hook pre_get_posts, qui modifie la requête avant son exécution:
1 add_action( 'pre_get_posts', 'my_main_query' ); 2 function my_main_query( $query ) { 3 if ( ! is_admin() && $query->is_main_query() && $query->is_home() ) { 4 $query->set( 'posts_per_page', 12 ); 5 } 6 }
Sécurité: échappement et assainissement
La règle d’or de WordPress: assainir à l’entrée, échapper à la sortie, valider partout. Toute donnée utilisateur est nettoyée avant d’être enregistrée en base de données et échappée avant d’être affichée dans le HTML, même si elle a déjà été nettoyée.
1 // Escaping ON OUTPUT 2 echo esc_html( $text ); // text inside tag 3 echo esc_attr( $value ); // attribute value 4 echo esc_url( $href ); // href/src links 5 echo wp_kses_post( $rich_html ); // safe HTML set for content 6 7 // Sanitization ON INPUT (before writing to DB) 8 $clean = sanitize_text_field( $_POST['name'] ); 9 $email = sanitize_email( $_POST['email'] ); 10 $num = absint( $_POST['count'] );
Protégez les formulaires et les actions avec des nonces, des jetons à usage unique contre les attaques CSRF:
1 // In form: 2 wp_nonce_field( 'my_save_action', 'my_nonce' ); 3 4 // During processing: 5 if ( ! isset( $_POST['my_nonce'] ) || 6 ! wp_verify_nonce( $_POST['my_nonce'], 'my_save_action' ) ) { 7 return; // request rejected 8 }
Dans la pratique, la plupart des vulnérabilités des thèmes et des extensions sont précisément des oublis d’échappement à l’affichage. Prenez l’habitude suivante: aucune variable ne doit arriver dans le HTML sans passer par une fonction esc_*.
API REST de WordPress
L’API REST renvoie les données du site au format JSON, elle est utilisée par les applications mobiles, les frontaux headless et les intégrations. L’adresse de base est /wp-json/wp/v2/.
1 GET /wp-json/wp/v2/posts // posts 2 GET /wp-json/wp/v2/pages // pages 3 GET /wp-json/wp/v2/media // media files 4 GET /wp-json/wp/v2/users // users 5 GET /wp-json/wp/v2/posts/123 // single post 6 GET /wp-json/wp/v2/posts?per_page=5&search=theme&_embed
Les routes personnalisées sont enregistrées sur le hook rest_api_init. Le paramètre permission_callback est obligatoire, sans lui WordPress émettra un avertissement; pour une lecture publique, utilisez '__return_true'.
1 add_action( 'rest_api_init', function () { 2 register_rest_route( 'myplugin/v1', '/items/(?P<id>\d+)', array( 3 'methods' => 'GET', 4 'callback' => 'my_get_item', 5 'permission_callback' => '__return_true', 6 ) ); 7 } );
WP-CLI: les commandes à portée de main
WP-CLI permet de gérer le site depuis le terminal, de manière plus rapide et plus fiable qu’en cliquant dans l’administration, surtout lorsqu’on maintient plusieurs sites. Les commandes les plus courantes:
1 wp core update # update WordPress core 2 wp core version # what version is installed 3 wp plugin install akismet --activate # install and activate plugin 4 wp plugin list # plugin list with status and version 5 wp theme activate twentytwentyfive # switch active theme 6 wp db export backup.sql # database dump to file 7 wp search-replace 'old.com' 'new.com' --dry-run # always dry run first 8 wp user create bob [email protected] --role=editor # create user 9 wp cache flush # flush object cache
wp search-replace comprend les données sérialisées, ce qui permet de changer le domaine en toute sécurité lors de la migration d’un site, contrairement à une requête SQL directe qui casse la sérialisation. Avant toute opération dangereuse, faites un wp db export.
Thèmes classiques et thèmes bloc en 2026
À la mi-2026 (version actuelle: WordPress 7.0 «Armstrong», PHP 8.3+ recommandé), les thèmes PHP classiques restent entièrement pris en charge et demeurent le type le plus répandu. Mais tous les nouveaux outils du cœur développent les thèmes bloc et l’édition complète du site (Full Site Editing): theme.json au lieu d’une partie des réglages de functions.php, templates HTML au lieu de PHP. La Boucle, bloginfo(), les balises conditionnelles et les hooks restent pertinents dans les thèmes hybrides et dans tout fragment PHP à l’intérieur des thèmes FSE, cette antisèche ne perd donc pas sa valeur. La voie pragmatique en 2026, c’est une base classique complétée par une prise en charge ciblée des blocs là où c’est réellement nécessaire.
⁉️🤔 Foire aux questions
Est-il obligatoire de créer les 13 fichiers pour un thème?
Non, le thème minimal fonctionnel se compose de
index.php+style.css. Mais pour un site complet, il est préférable de conserver l’ensemble complet: chaque fichier donne à WordPress la capacité de choisir le template optimal. Par exemple, sanssingle.php, un article sera affiché viaindex.phpet perdra le bloc de commentaires.
Quelle est la différence entre get_bloginfo() et bloginfo()?
bloginfo() affiche immédiatement la valeur à l’écran (echo). get_bloginfo() retourne une chaîne dans une variable, vous pouvez la traiter, la concaténer ou l’utiliser dans une autre expression avant l’affichage effectif.
Où placer la Boucle si la page comporte plusieurs types de contenu?
La Boucle peut être lancée plusieurs fois. Scénario typique: une Boucle pour la liste principale d’articles, une seconde pour un widget «actualités récentes» dans la barre latérale. Avant la seconde Boucle, réinitialisez le pointeur avec wp_reset_postdata(), sinon le code suivant sur la page récupérera un contexte d’article erroné.
Cette antisèche fonctionne-t-elle pour les thèmes en blocs (FSE)?
Partiellement. Les thèmes en blocs (Full Site Editing) utilisent
theme.jsonau lieu defunctions.phppour de nombreux réglages et des templates en HTML plutôt qu’en PHP. Mais la Boucle,bloginfo()et les balises d’inclusion restent pertinentes pour les thèmes hybrides et tout template PHP au sein des thèmes FSE.
Que faire si functions.php devient trop volumineux?
Scindez la logique dans des fichiers séparés et incluez-les depuis
functions.phpviarequire_onceouinclude. Par exemple:require_once get_template_directory() . '/inc/custom-post-types.php';. Cela améliore la lisibilité et simplifie la maintenance, une bonne pratique pour tout thème dépassant 20 à 30 hooks.
Quelle est la différence entre une action et un filtre?
Une action exécute un effet de bord et ne retourne rien (mettre un script en file d’attente, envoyer un email). Un filtre reçoit une valeur, la modifie et doit la retourner: un
returnoublié dans un filtre annulera le contenu. Ils s’enregistrent de manière identique:add_action()etadd_filter().
Pourquoi is_single() ne fonctionne-t-il pas dans functions.php?
Les balises conditionnelles de requête ne sont disponibles qu’une fois la requête principale constituée, c’est-à-dire dans les fichiers de template ou à partir du hook
template_redirect. Au début defunctions.php, la requête n’est pas encore prête, WordPress émettra donc_doing_it_wrong(). Seulsis_admin()etis_user_logged_in()fonctionnent sans dépendance à la requête.
Ce qu’il faut garder à portée de main quand on développe sur WordPress
Cette antisèche est le cadre à partir duquel le développement WordPress démarre. Les fichiers de thème et la hiérarchie des templates, la Boucle, les balises d’inclusion et bloginfo() assemblent le thème, tandis que les hooks et filtres, les balises conditionnelles, la mise en file d’attente des scripts, les shortcodes, WP_Query, l’échappement, l’API REST et WP-CLI couvrent la grande majorité des tâches courantes. Le reste, c’est de la pratique et de la documentation.
Pour approfondir, le manuel de développement de thème sur developer.wordpress.org est la première adresse. La référence des balises de template avec des centaines de fonctions pour toutes les occasions s’y trouve également. Si vous passez d’une maquette HTML à un thème terminé, commencez par le guide pas à pas pour créer un thème WordPress à partir de HTML, où la Boucle et les balises sont expliquées en contexte réel, de la maquette au thème fonctionnel.
Mettez cette antisèche en favori et gardez-la à portée de main pendant le développement.
Quelle balise ou quel hook consultez-vous le plus souvent? Écrivez dans les commentaires quelle tâche WordPress vous avez rencontrée et partagez votre cas d’usage: un échange d’expérience vécue vaut bien une douzaine de guides officiels.



