page.php et single.php
Deux templates, deux usages
Dans WordPress, il y a deux types de contenus "individuels" :
- Page statique (page) — "À propos", "Contact", "Accueil"… Pas de date, pas d'auteur visible, pas de catégories.
- Article de blog (post) — Classé par date, avec auteur, catégories et tags.
Chacun a son template : page.php et single.php. Ils peuvent partager beaucoup de code, mais leur mise en page diffère souvent.
page.php — les pages statiques
<?php get_header(); ?>
<main class="site-main">
<?php while ( have_posts() ) : the_post(); ?>
<article id="page-<?php the_ID(); ?>" <?php post_class( 'page-content' ); ?>>
<h1 class="entry-title"><?php the_title(); ?></h1>
<div class="entry-content">
<?php the_content(); ?>
</div>
</article>
<?php endwhile; ?>
</main>
<?php get_footer(); ?>
La boucle d'une page ne contient toujours qu'un seul élément — la page demandée. On garde quand même la structure while/endwhile par convention WordPress.
single.php — les articles
single.php ressemble à page.php mais ajoute des métadonnées (date, auteur, catégories) et la navigation entre articles.
<?php get_header(); ?>
<main class="site-main">
<?php while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
<header class="entry-header">
<h1 class="entry-title"><?php the_title(); ?></h1>
<p class="entry-meta">
Publié le <?php the_date( 'd/m/Y' ); ?>
par <?php the_author(); ?>
dans <?php the_category( ', ' ); ?>
</p>
</header>
<?php the_post_thumbnail( 'large' ); ?>
<div class="entry-content">
<?php the_content(); ?>
</div>
<footer class="entry-footer">
<?php the_tags( 'Tags : ', ', ' ); ?>
</footer>
</article>
<!-- Navigation article précédent / suivant -->
<?php the_post_navigation( [
'prev_text' => '← %title',
'next_text' => '%title →',
] ); ?>
<!-- Section commentaires -->
<?php comments_template(); ?>
<?php endwhile; ?>
</main>
<?php get_footer(); ?>
Templates de page personnalisés
Tu peux créer des templates spéciaux pour certaines pages. Par exemple, un template sans sidebar pour les landing pages :
<?php
/**
* Template Name: Pleine largeur
* Template Post Type: page
*/
get_header();
// ... contenu sans sidebar
get_footer();
Le commentaire Template Name: est lu par WordPress et fait apparaître ce template dans le menu déroulant "Attributs de la page" dans l'éditeur. L'utilisateur peut assigner ce template à n'importe quelle page.
comments_template()
Cette fonction charge le fichier comments.php de ton thème (ou le template par défaut de WordPress si le fichier n'existe pas). Elle gère automatiquement la liste des commentaires, le formulaire de réponse et la pagination des commentaires.
Pour désactiver les commentaires sur un article, va dans l'éditeur WordPress → "Discussion" → décocher "Autoriser les commentaires". comments_template() ne s'affiche pas si les commentaires sont fermés.
page.php= pages statiques (sans date/auteur visible) ·single.php= articles de blog- La boucle d'une page individuelle ne contient toujours qu'un seul élément
the_category()etthe_tags()affichent les taxonomies de l'articlethe_post_navigation()génère la navigation article précédent/suivantcomments_template()charge la section commentaires- Template personnalisé : ajouter
Template Name: Nomen commentaire PHP en tête de fichier