Insérer un fichier template dans WordPress de la bonne manière

Si vous venez d’un univers de sites statiques en HTML, WordPress peut paraître déroutant au début. Vous créez un fichier about-us.html, vous le déposez sur votre serveur, et vous vous attendez à ce qu’il fonctionne comme une page web normale. Mais quand vous essayez d’y accéder, quelque chose cloche. La mise en forme est absente, les fonctionnalités de WordPress ne fonctionnent pas, et vous réalisez que vous êtes complètement en dehors du système.

Voici le changement de mentalité fondamental à opérer : WordPress ne sert pas de fichiers statiques depuis votre disque. Chaque article, chaque page, chaque contenu vit dans la base de données. Les fichiers template que vous créez sont des plans, pas des pages autonomes. WordPress charge son moteur, récupère le contenu depuis la base de données, le verse dans ces templates, puis envoie le résultat au navigateur.

Cette architecture est puissante, mais elle demande un modèle mental différent. Voyons ensemble comment ajouter correctement des templates personnalisés, les inclure dans votre thème, et créer des liens sans rien casser.

La mauvaise méthode : les fichiers PHP directs

Imaginons la situation. Vous créez un fichier nommé about-us.php dans votre dossier de thème et vous le déposez sur le serveur. Vous essayez ensuite de visiter votresite.com/wp-content/themes/votretheme/about-us.php.

Que se passe-t-il ? Le fichier se charge, mais il n’a aucun accès aux fonctions de WordPress. get_header() échoue. Votre menu n’apparaît pas. La mise en forme est absente. La session utilisateur et l’état de connexion sont invisibles. Vous vous tenez littéralement à l’extérieur de la maison, en regardant par la fenêtre.

Pourquoi ça échoue : Quand vous accédez directement à un fichier PHP, le cœur de WordPress ne se charge jamais. Pas de connexion à la base de données, pas de requête, pas de hiérarchie de templates. Vous obtenez un fichier vide, isolé, sans aucun contexte.

La bonne méthode : les templates de page

L’approche correcte est de créer un template de page que WordPress reconnaît et peut utiliser pour afficher le contenu de la base de données.

Étape 1 : Créer votre fichier template

Dans votre dossier de thème, créez un fichier nommé about-us.php. Tout en haut, ajoutez ce bloc de commentaire :

php

<?php
/**
 * Template Name : À propos
 */

get_header();
?>

<div class="content-area">
    <h1><?php the_title(); ?></h1>
    <div class="entry-content">
        <?php the_content(); ?>
    </div>
</div>

<?php get_footer(); ?>

Ce simple commentaire — Template Name : À propos — indique à WordPress que ce fichier existe et peut être sélectionné comme template.

Étape 2 : Créer la page dans l’administration

  1. Allez dans Pages > Ajouter.
  2. Donnez-lui un titre : « À propos ».
  3. Dans la boîte Attributs de la page sur la droite, trouvez le menu déroulant Template.
  4. Sélectionnez « À propos » (le nom que vous avez défini dans le commentaire).
  5. Ajoutez votre contenu dans l’éditeur. Ce contenu sera récupéré depuis la base de données et affiché là où the_content() apparaît dans votre template.
  6. Cliquez sur Publier.

Maintenant, quand vous visualisez cette page, WordPress charge son moteur, interroge la base de données pour récupérer le contenu de la page, et utilise about-us.php comme plan. L’URL sera du style votresite.com/a-propos (selon votre configuration de permaliens). Propre, sécurisé et parfaitement intégré.

La bonne méthode : les parties de template réutilisables

Parfois, vous n’avez pas besoin d’un template de page complet. Vous voulez simplement inclure un morceau de code réutilisable dans plusieurs templates — une section personnalisée, une boucle complexe, un bloc d’appel à l’action spécifique.

WordPress fournit la fonction get_template_part() exactement pour cela.

Étape 1 : Créer la partie de template

Dans votre dossier de thème, créez un sous-dossier nommé template-parts (c’est une convention, pas une obligation). À l’intérieur, créez un fichier nommé content-mise-en-avant.php :

php

<?php
// template-parts/content-mise-en-avant.php
?>
<div class="featured-section">
    <h2>Ressources en vedette</h2>
    <?php
    $featured_posts = new WP_Query(array(
        'posts_per_page' => 3,
        'meta_key' => 'featured',
        'meta_value' => 'yes'
    ));
    
    if ($featured_posts->have_posts()) :
        while ($featured_posts->have_posts()) : $featured_posts->the_post();
            ?>
            <article>
                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                <?php the_excerpt(); ?>
            </article>
        <?php endwhile;
        wp_reset_postdata();
    endif;
    ?>
</div>

Étape 2 : L’inclure dans vos templates

Maintenant, partout où vous voulez faire apparaître cette section en vedette, vous appelez get_template_part() :

php

<?php get_template_part('template-parts/content', 'mise-en-avant'); ?>

WordPress cherchera template-parts/content-mise-en-avant.php et l’inclura. La fonction est intelligente — elle permet des solutions de repli et garde vos templates propres et modulaires.

Pourquoi c’est important : Au lieu de copier-coller les mêmes 20 lignes de HTML et PHP dans plusieurs fichiers de template, vous les définissez une fois et vous les réutilisez. Quand vous devez modifier le design, vous changez un seul fichier. C’est la manière professionnelle de construire des thèmes WordPress.

Créer des liens vers vos pages : la méthode correcte

La réponse Stack Overflow mentionnait la création d’un lien vers un fichier PHP directement. Soyons clairs : vous ne devriez jamais coder en dur un lien vers un fichier PHP dans votre thème. Ces chemins se cassent quand vous modifiez la structure des permaliens, que vous changez de serveur, ou que vous mettez à jour votre thème.

Utilisez plutôt les fonctions WordPress qui génèrent les URLs dynamiquement.

Pour une page que vous avez créée :

php

<a href="<?php echo get_permalink(get_page_by_path('a-propos')->ID); ?>">
    À propos
</a>

Cette fonction recherche la page par son slug (a-propos) et retourne son permalien. Même si vous changez la structure d’URL plus tard, ce lien continuera de fonctionner.

Pour la page d’accueil :

php

<a href="<?php echo home_url(); ?>">Accueil</a>

Pour une page spécifique en utilisant son slug :

php

<a href="<?php echo site_url('/a-propos/'); ?>">À propos</a>

La fonction site_url() retourne l’URL de base de votre site, et vous ajoutez le chemin. C’est plus simple que l’approche get_permalink() mais légèrement moins dynamique. Les deux fonctionnent.

Un exemple complet : construire une page À propos correctement

Parcourons un exemple complet, prêt pour la production.

Étape 1 : Créez a-propos.php dans votre dossier de thème avec l’en-tête de template.

Étape 2 : Ajoutez votre balisage personnalisé, vos boucles et vos fonctions WordPress :

php

<?php
/**
 * Template Name : À propos
 */

get_header();
?>

<main id="primary" class="site-main">
    <div class="container">
        <header class="page-header">
            <h1 class="page-title"><?php the_title(); ?></h1>
        </header>

        <div class="page-content">
            <?php the_content(); ?>
            
            <?php get_template_part('template-parts/equipe', 'membres'); ?>
            
            <?php get_template_part('template-parts/contact', 'cta'); ?>
        </div>
    </div>
</main>

<?php get_footer(); ?>

Étape 3 : Créez vos parties de template.

template-parts/equipe-membres.php :

php

<div class="team-section">
    <h2>Rencontrez notre équipe</h2>
    <div class="team-grid">
        <?php
        $team_members = new WP_Query(array(
            'post_type' => 'team',
            'posts_per_page' => -1,
            'orderby' => 'menu_order'
        ));
        
        if ($team_members->have_posts()) :
            while ($team_members->have_posts()) : $team_members->the_post();
                ?>
                <div class="team-card">
                    <?php if (has_post_thumbnail()) : ?>
                        <div class="team-photo">
                            <?php the_post_thumbnail('medium'); ?>
                        </div>
                    <?php endif; ?>
                    <h3><?php the_title(); ?></h3>
                    <p class="team-position"><?php echo get_post_meta(get_the_ID(), 'position', true); ?></p>
                    <?php the_excerpt(); ?>
                </div>
            <?php endwhile;
            wp_reset_postdata();
        endif;
        ?>
    </div>
</div>

Étape 4 : Créez la page dans l’administration WordPress, attribuez-lui le template « À propos », et publiez.

Maintenant, votre page « À propos » a un design personnalisé, récupère le contenu de la base de données, inclut des composants réutilisables, et s’intègre parfaitement à WordPress. Tout cela sans un seul lien direct vers un fichier PHP.

Les pièges courants à éviter

  • Accès direct à un fichier PHP : Ne faites jamais de lien direct vers wp-content/themes/votretheme/fichier.php. Cela contourne complètement WordPress.
  • Chemins codés en dur : Évitez href="http://votresite.com/a-propos". Utilisez plutôt echo site_url('/a-propos/');.
  • En-tête de template manquant : Sans Template Name : À propos dans le fichier, il n’apparaîtra pas dans le menu déroulant de l’administration.
  • Oubli de the_content() : Si votre template n’inclut pas the_content(), le contenu que vous avez écrit dans l’éditeur ne s’affichera jamais.
  • Confusion sur get_template_part() : La fonction attend un slug, pas un chemin complet. get_template_part('content', 'featured') cherche content-featured.php, pas content/featured.php.

Ce qu’il faut retenir

WordPress est un système, pas une collection de fichiers statiques. Une fois que vous avez accepté cela, tout devient plus simple. Créez des templates de page avec des en-têtes appropriés. Utilisez get_template_part() pour les composants réutilisables. Générez les URLs dynamiquement avec les fonctions WordPress. Votre code devient plus propre, vos sites deviennent plus faciles à maintenir, et vous arrêtez de lutter contre la plateforme.

L’ancienne mentalité du HTML statique vous a bien servi. Mais pour construire des sites WordPress vraiment puissants, vous devez travailler avec l’architecture, pas contre elle. Commencez avec un seul template, construisez-le correctement, et regardez comment le reste se met en place.

Ce billet vous a été utile?
Offrez-nous un café!
Tags: