Créer une page d’archive d’un format d’article sous WordPress

6 commentaires
Créer une page d’archive d’un format d’article sous WordPress
À la différence d'un type de contenu ou d'une taxonomie, un format d'article ne dispose pas d'une page d'archives qui permettrait de lister tous les contenus disposant d'une mise en page en particulier.

Techniquement, c’est logique car rappelons une nouvelle fois que cette fonctionnalité est conçue dans un but de mise en forme. Pour autant, il peut être utile de retrouver sur une page l’ensemble des articles au format vidéo comme c’est le cas sur ma page de podcasts vidéos.

Nous aurons ici recours à la création d’un modèle de page pour WordPress, ni plus ni moins, et d’une requête personnalisée pour récupérer les articles au(x) format(s) souhaité(s).

N.B : le code ci-dessous est volontairement simplifié en faisant abstraction de toute structure HTML, celle-ci dépendant directement de votre thème WordPress. De fait, reportez-vous au tutoriel sur la création de modèle de page pour en savoir plus.

Étape n°1 – Création du modèle de page

À l’aide de votre client FTP favori, créez un nouveau fichier que vous nommerez par exemple template-NOM_DU_FORMAT.php. Ce dernier doit être placé à la racine du dossier de votre thème WordPress – qu’il s’agisse d’un thème parent ou enfant.

Commençons par définir le modèle de page pour qu’il soit reconnu par WordPress, j’entends par là qu’il pourra être choisi dans la liste des modèles disponibles pour votre page au sein du back-office.

Copiez donc le bout de code suivant en début de fichier :

<?php if ( !defined('ABSPATH') ) die('Zone interdite'); ?>
<?php
/*
Template Name: Podcasts
*/
?>
<?php get_header(); ?>

Étape n°2 – Récupération des contenus

Nous aurons recours à la fameuse WP_Query pour lister les articles dont le format souhaité. Il nous faut définir une tax_query comme argument qui ira chercher le format vidéo dans cet exemple. Vous pouvez ajouter les formats de votre choix en les séparant par des virgules dans le tableau array('post-format-video').

On boucle ensuite pour afficher les contenus en respectant les formats bien entendu ce que votre thème doit supporter ! Il s’agit de la structure définie par get_template_part('content', get_post_format());.

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args = array (
'paged' => $paged,
'tax_query' => array(
array(
'taxonomy' => 'post_format',
'field' => 'slug',
'terms' => array( 'post-format-video' ),
),
),
);

$the_query = new WP_Query( $args );
?>

<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php get_template_part('content', get_post_format()); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else: ?>
<?php _e('No content found', 'wpc'); ?>
<?php endif; ?>

Étape n°3 – Création de la page

Dans votre administration WordPress, créez une nouvelle page pour laquelle vous assignerez le modèle nouvellement codé à partir de Attributs de la page.

wpchannel-template-page

Dans notre exemple, il s’agira de Podcasts.

Publiez la page et admirez le résultat final ! Il ne vous reste plus qu’à ajouter cette dernière dans le menu de navigation et le tour est joué !

Par Aurélien Denis

Consultant & Développeur WordPress / WooCommerce. Un site à créer, à maintenir ou à débuguer ? Contactez-moi.

6 commentaires
  1. un coup du lapin

    j’ai vraiment pas compris pourquoi la pagination déconnait et j’ai découvert accidentellement qu’on pouvait accéder aux archives par format : url/type/le-format/

    je me suis donc contentée de personnaliser la page des archives

  2. un coup du lapin

    Merci pour ce tutoriel qui répond parfaitement à ce que je souhaite faire

    Je rencontre un problème avec la pagination (avec the_posts_pagination précisément) et après avoir fouiné, je suis tombée sur ce « hack » :
    http://wordpress.stackexchange.com/questions/120407/how-to-fix-pagination-for-custom-loops/120408#120408

    je ne suis pas une pro de WP alors j’hésite à utiliser ce hack ou bien créer une catégorie pour contourner le problème (même si c’est « pas bien » et que ça fera faire une manip de plus à l’utilisateur final du site)

    As-tu rencontré le même problème que moi et comment l’as-tu résolu ?

    1. Aurélien Denis auteur de l’article

      Hum le tutoriel gère la pagination… possible qu’une incompatibilité due à une autre requête survienne. Le lien est pertinent oui.

      Surtout pas de catégorie pour créer une pagination ! 😉

  3. Papi Boyington

    C’est propre, mais je ne vois pas trop ce que ça apporte en plus d’une simple catégorie ‘video’ que l’on associerait à chaque vidéo et qui générerait alors automatiquement sa page d’archive !?

    1. Aurélien Denis auteur de l’article

      D’un point de vue SEO, c’est un non-sens que de créer une catégorie qui n’a aucun lien sémantique avec le reste du site. C’est un terme générique et les formats d’articles ont justement été créés pour éviter d’utiliser les catégories qui sont là pour classer des contenus et en aucun cas s’occuper de mise en forme.

Laisser un commentaire