
Si vous venez d’un univers de sites statiques en HTMLLe langage de balisage standard pour créer des pages web, s... More, 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 pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More 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 articleUn contenu dynamique et temporel (ex. : billets de blog) aff... More, chaque pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More, chaque contenu vit dans la base de donnéesL'endroit où tout le contenu, les réglages et les données... More. 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éesL'endroit où tout le contenu, les réglages et les données... More, le verse dans ces templates, puis envoie le résultat au navigateur.
Cette architecture est puissante, mais elle demande un modèleUn fichier dans un thème qui définit comment différentes ... More 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.
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 menuUne collection de liens (vers des pages, catégories ou URLs... More 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éesL'endroit où tout le contenu, les réglages et les données... More, pas de requête, pas de hiérarchie de templates. Vous obtenez un fichier vide, isolé, sans aucun contexte.
L’approche correcte est de créer un template de pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More que WordPress reconnaît et peut utiliser pour afficher le contenu de la base de donnéesL'endroit où tout le contenu, les réglages et les données... More.
É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 commentaireUn retour ou une discussion laissée par un utilisateur sur ... More :
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 commentaireUn retour ou une discussion laissée par un utilisateur sur ... More — Template Name : À propos — indique à WordPress que ce fichier existe et peut être sélectionné comme template.
Étape 2 : Créer la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More dans l’administration
the_content() apparaît dans votre template.Maintenant, quand vous visualisez cette pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More, WordPress charge son moteur, interroge la base de donnéesL'endroit où tout le contenu, les réglages et les données... More pour récupérer le contenu de la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More, 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é.
Parfois, vous n’avez pas besoin d’un template de pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More 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 HTMLLe langage de balisage standard pour créer des pages web, s... More 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.
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 pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More 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 pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More par son slugLa version d'un titre d'article/page adaptée aux URLs (ex. ... More (a-propos) et retourne son permalienL'URL permanente d'un article, d'une page ou d'un autre cont... More. Même si vous changez la structure d’URL plus tard, ce lien continuera de fonctionner.
Pour la pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More d’accueil :
php
<a href="<?php echo home_url(); ?>">Accueil</a>
Pour une pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More spécifique en utilisant son slugLa version d'un titre d'article/page adaptée aux URLs (ex. ... More :
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.
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êteLa section supérieure d'un site web, contenant généraleme... More 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 pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More dans l’administration WordPress, attribuez-lui le template « À propos », et publiez.
Maintenant, votre pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More « À propos » a un design personnalisé, récupère le contenu de la base de donnéesL'endroit où tout le contenu, les réglages et les données... More, inclut des composants réutilisables, et s’intègre parfaitement à WordPress. Tout cela sans un seul lien direct vers un fichier PHP.
wp-content/themes/votretheme/fichier.php. Cela contourne complètement WordPress.href="http://votresite.com/a-propos". Utilisez plutôt echo site_url('/a-propos/');.Template Name : À propos dans le fichier, il n’apparaîtra pas dans le menuUne collection de liens (vers des pages, catégories ou URLs... More déroulant de l’administration.the_content() : Si votre template n’inclut pas the_content(), le contenu que vous avez écrit dans l’éditeur ne s’affichera jamais.get_template_part() : La fonction attend un slugLa version d'un titre d'article/page adaptée aux URLs (ex. ... More, pas un chemin complet. get_template_part('content', 'featured') cherche content-featured.php, pas content/featured.php.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 pageUn contenu statique (ex. : "À propos", "Contact") qui ne fa... More 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 HTMLLe langage de balisage standard pour créer des pages web, s... More 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.