WordPress

Créer un thème WordPress from scratch en 2026 (sans page builder)

Publié le 29 March 2026 · Mis à jour le 30 March 2026 — 4 min de lecture
En bref

Créer un thème WordPress from scratch vous donne un contrôle total sur le code, les performances et le design. Ce guide étape par étape vous montre comment développer un thème PHP natif en 2026, sans Elementor ni Divi.

Développer un thème WordPress from scratch est la meilleure décision technique que vous puissiez prendre pour un site sérieux. Pas de bloat, pas de dépendance à un constructeur, un score PageSpeed qui dépasse 90 sur mobile. Voici la méthode complète.

Pourquoi développer un thème natif ?

Les page builders (Elementor, Divi, WPBakery) génèrent entre 500 Ko et 1,5 Mo de CSS/JS inutile par page. Un thème natif PHP bien construit charge en moins de 50 Ko de CSS et 10 Ko de JS. La différence est visible immédiatement sur PageSpeed Insights : on passe de 35/100 à 90+/100 sur mobile.

Autre avantage : vous êtes propriétaire du code. Pas de licence annuelle à renouveler, pas de mise à jour du page builder qui casse votre design du jour au lendemain.

La structure minimale d’un thème WordPress

WordPress exige deux fichiers pour reconnaître un thème : style.css (avec les commentaires d’en-tête) et index.php. En pratique, un thème complet comprend :

  • style.css — en-tête du thème + styles globaux
  • functions.php — setup, enqueue des assets, hooks
  • index.php — template par défaut / blog
  • header.php et footer.php — structure HTML commune
  • front-page.php — page d’accueil
  • single.php — articles individuels
  • page.php — pages statiques
  • archive.php — catégories, tags, archives
  • 404.php — page d’erreur

Étape 1 : le fichier style.css et functions.php

Le style.css commence par un commentaire structuré :

/*
Theme Name: MonTheme
Author: WebEngine
Version: 1.0.0
*/

Dans functions.php, vous déclarez le support du thème et chargez vos assets :

function mytheme_setup() {
    add_theme_support( 'title-tag' );
    add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'mytheme_setup' );

function mytheme_scripts() {
    wp_enqueue_style( 'main', get_template_directory_uri() . '/assets/css/main.css', [], '1.0' );
    wp_enqueue_script( 'main', get_template_directory_uri() . '/assets/js/main.js', [], '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_scripts' );

Étape 2 : header.php et la structure HTML

Le header.php contient tout ce qui précède le contenu principal : doctype, balises meta, navigation. Il est appelé avec get_header() dans chaque template. Points clés : pas de styles inline, laisser WordPress gérer le <title> via add_theme_support('title-tag'), utiliser wp_head() juste avant </head>.

Étape 3 : la boucle WordPress (The Loop)

La boucle WordPress est le cœur de chaque template :

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <article>
        <h2><?php the_title(); ?></h2>
        <?php the_content(); ?>
    </article>
<?php endwhile; endif; ?>

Dans index.php, vous affichez la liste des articles. Dans single.php, vous affichez un article complet. Dans page.php, une page statique. La logique reste la même, seul le contexte change.

Étape 4 : les assets CSS et JavaScript

Organisez vos assets dans un dossier assets/css/ et assets/js/. Utilisez des variables CSS natives (:root { --color-accent: #2563eb; }) plutôt que Sass si vous voulez garder la chaîne de build simple. Pour le JavaScript, préférez du JS vanilla moderne (ES2020+) chargé en defer : pas besoin de jQuery.

Étape 5 : les template parts

Pour éviter la répétition, WordPress offre get_template_part(). Créez un dossier template-parts/ avec des fichiers réutilisables : card-post.php, card-service.php, hero.php. Vous les appelez avec get_template_part('template-parts/card-post').

Performances et bonnes pratiques

Pour un score PageSpeed 90+ sur mobile dès le départ : activez loading="lazy" sur toutes les images sauf la hero LCP, préchargez le CSS avec <link rel="preload">, supprimez les styles inutiles WordPress (block library, classic-theme-styles), chargez les polices en self-hosted avec font-display: swap.

Résultat : un thème from scratch bien fait charge en moins de 1 seconde sur un hébergement standard. C’est la base de tout site WordPress sérieux en 2026.

Besoin d’un expert ? Expert thèmes WordPress sur mesure →

Questions fréquentes

Quels sont les fichiers minimaux pour un thème WordPress fonctionnel ?

Un thème WordPress minimal nécessite deux fichiers : style.css (avec l’en-tête de déclaration du thème) et index.php (le template principal). Pour un thème professionnel, ajoutez : functions.php (fonctions et hooks), header.php, footer.php, single.php (articles), page.php (pages), archive.php et 404.php. Le fichier functions.php enqueue les scripts et styles.

Vaut-il mieux utiliser un starter theme ou partir de zéro ?

Pour la performance maximale, partir de zéro est préférable — vous n’embarquez que ce dont vous avez besoin. Les starter themes (Underscores, Sage) accélèrent le démarrage mais ajoutent des CSS de base à supprimer ou surcharger. Pour un développeur expérimenté, la différence de temps est faible ; pour un débutant, Underscores est un bon point de départ.

Comment structurer un thème WordPress custom pour qu’il soit maintenable ?

Bonne pratique : un fichier functions.php léger qui inclut des fichiers séparés par responsabilité (includes/enqueue.php, includes/custom-post-types.php, includes/hooks.php), un dossier template-parts/ pour les composants réutilisables, et une nomenclature BEM cohérente pour le CSS. Documentez les hooks custom dans un fichier README.md.

W
Rédigé par
WebEngine
Développeur web freelance à Paris spécialisé WordPress, WooCommerce et SEO technique depuis 2010. 13 avis vérifiés · Note 5/5. Chaque site livré atteint un score PageSpeed mobile supérieur à 90.

Un projet en tête ?

Devis gratuit sous 48h, sans engagement.

Demander un devis gratuit