Comment trier les articles par date de modification dans WordPress?

La plupart des blogs contiennent des articles statiques, c’est-à-dire qui n’évoluent pas après leur publication. La section des commentaires est la seule portion dynamique des articles publiés. C’est pourquoi on classe généralement les archives par ordre chronologique. C’est aussi la raison pour laquelle des extensions telles que Recent Comments existent: pour mettre en évidence tout nouveau contenu sur des publications spécifiques.

Toutefois, si votre site Web se spécialise dans la rédaction d’articles tels que la couverture d’événements, les dernières nouvelles ou toute autre activité nécessitant la mise à jour fréquente des publications, il est préférable de trier les archives par date de modification.

Bien que WordPress ne fournisse pas cette fonctionnalité par défaut, il est possible d’y arriver à l’aide d’extension ou par programmation.

Méthode #1: Création d’un filtre WordPress

Si vous possédez un minimum de connaissances en PHP, vous pouvez modifier le thème de votre site. Sachez toutefois que si vous modifiez un thème qui est mis à jour de façon automatique, vous perdrez éventuellement ces modifications. Si c’est votre cas, il est alors nécessaire de créer un thème-enfant WordPress.

Pour changer l’ordre des articles, il nécessaire de modifier les paramètres de la boucle de requêtes WP_Query. Pour ce faire, nous allons créer un filtre WordPress. Nous appliquerons ensuite ce filtre aux pages d’archives.

Dans un premier temps, ajoutez le code suivant au fichier functions.php afin de créer le filtre:

function articles_par_date_modification($query) {
  if(is_archive() || is_home()) {
    $query->set('orderby', 'modified');
  }
}

Il vous faut ensuite activer le filtre en ajoutant la ligne suivante au fichier functions.php ou au début du fichier archive.php:

<?php
add_filter('pre_get_posts', 'articles_par_date_modification');
?>

Cette méthode offre beaucoup de flexibilité car il est possible de spécifier d’autres paramètres de tri. Voici quelques exemples de valeurs acceptées pour le paramètre orderby:

  • ID: Tri les articles par identifiant numérique.
  • author: Tri les articles par nom d’auteur.
  • title: Tri les articles par ordre alphabétique du titre.
  • name: Tri les articles par permaliens (slug).
  • date: Tri les articles par date (valeur par défaut).
  • modified: Tri les articles par date de modification.
  • comment_count: Tri les articles par nombre de commentaires.

De plus, il est possible de modifier l’ordre du tri (ascendant ou descendant) à l’aide du paramètre order:

function archive_par_date_modification($query) {
  if(is_archive() || is_home()) {
    $query->set('orderby', 'modified');
    $query->set('order', 'ASC');
  }
}

La liste complète des paramètres de tri se trouve ici.

Méthode #2: Création d’une fonction

Si vous souhaitez afficher une liste d’articles ailleurs dans votre thème, il vous faudra créer une fonction personnalisée. C’est le cas par exemple pour afficher une liste de publications dans une barre de menu latérale (sidebar).

Insérez le code suivant dans le fichier functions.php de votre thème WordPress:

function articlesRecents($orderby = 'modified', $posts_per_page = 5) {
  $args = array(
    'orderby' => $orderby,
    'ignore_sticky_posts' => '1',
    'posts_per_page' => $posts_per_page
  );

  $modified_posts_query = new WP_Query($args);

  if($modified_posts_query->have_posts()) {

    echo '<ul>';

    while($modified_posts_query->have_posts()) {
      $modified_posts_query->the_post();

      echo '<li>';
      echo '<a href="'.get_permalink($modified_posts_query->post->ID).'">';
      echo get_the_title($modified_posts_query->post->ID);
      echo '</a>';
      echo '</li>';
    }

    echo '</ul>';
  }

  wp_reset_postdata();
}

Notez que nous avons appelé la fonction “wp_reset_postdata()” après la boucle. Cela indique à WordPress que l’utilisation de la boucle de requêtes personnalisée est terminée.

Insérez ensuite ce code à l’endroit désiré dans votre thème. Ce peut être dans une barre latérale ou dans le pied de page par exemple.

<?php
articlesRecents();
?>

Il est aussi possible de spécifier l’ordre de tri et le nombre d’articles à afficher avec cette même fonction. Ainsi, pour afficher dix articles triés par date de publication, vous pourriez utiliser ceci:

<?php
articlesRecents('date',10);
?>

Avec un peu de créativité, il est facile d’ajouter d’autres éléments à la liste tels que le nombre de commentaires et la vignette des articles.

Méthode #3: Utilisation de shortcode

Pour inclure une liste d’articles dans une page WordPress de façon dynamique, il suffit de créer un « shortcode ». Sous WordPress, un « shortcode » est une ligne de code que l’on insère dans un post ou une page. WordPress remplace ce shortcode par le résultat d’une fonction PHP au moment de générer la page.

La première étape consiste à créer la fonction qui génère la liste d’articles. Insérez le code suivant dans le fichier functions.php:

function articlesRecents($atts) {

  if(isset($atts['orderby'])) {
    $orderby = $atts['orderby'];
  } else {
    $orderby = 'modified';
  }

  if(isset($atts['posts_per_page'])) {
    $posts_per_page = $atts['posts_per_page'];
  } else {
    $posts_per_page = 5;
  }
  $args = array(
    'orderby' => $orderby,
    'ignore_sticky_posts' => '1',
    'posts_per_page' => $posts_per_page
  );

  $modified_posts_query = new WP_Query($args);

  if($modified_posts_query->have_posts()) {

    echo '<ul>';

    while($modified_posts_query->have_posts()) {
      $modified_posts_query->the_post();

      echo '<li>';
      echo '<a href="'.get_permalink($modified_posts_query->post->ID).'">';
      echo get_the_title($modified_posts_query->post->ID);
      echo '</a>';
      echo '</li>';
    }

    echo '</ul>';
  }

  wp_reset_postdata();
}

Dans un second temps, indiquez à WordPress que cette fonction doit servir de shortcode en ajoutant cette ligne à functions.php:

add_shortcode('articles_recents', 'articlesRecents');

Finalement, invoquez la liste d’articles en insérant le shortcode suivant dans une page ou un post WordPress:

[articles_recents orderby='modified' posts_per_page='10']

Dans cet exemple, le shortcode accepte deux paramètres: orderby et posts_per_page. Les valeurs de ces paramètres sont envoyés à la fonction articlesRecents dans le vecteur $atts. Il est donc possible de recueillir d’autres paramètres du shortcode à l’aide de la variable $atts[‘nom_du_parametre’] au besoin.

Méthode #4: Utilisation d’une extension

Si la programmation PHP n’est pas votre truc, vous pouvez utilisez une extension pour trier et afficher les articles sur votre site. Depuis le tableau de bord WordPress, cliquez sur Extensions > Ajouter.

Effectuez ensuite une recherche pour « display posts ». Installez et activez le plug-in suivant:

extension wordpress display posts

Une fois l’extension activée, il n’y aucune configuration à faire. Pour l’utiliser, il suffit d’insérer un shortcode dans un post ou une page:

[display-posts orderby='modified']

Par défault, ce plug-in affiche une liste d’articles ainsi:

wordpress display posts liste articles

Toutefois, il est aussi possible d’afficher la liste sous forme de tableau ou de grille à l’aide du paramètre « wrapper »:

[display-posts image_size="medium" wrapper="div" wrapper_class="articles-recents grille" meta_key="_thumbnail_id" include_excerpt="true"]

De cette façon, les articles sont regroupées sous des balises « <div> » plutôt que des items de liste « <li> ». Par contre, c’est à vous de créer le code CSS pour mettre en page la grille.

Insérez le code suivant dans le fichier style.css de votre thème:

.articles-recents.grille,
.articles-recents.grille .listing-item {
    display: block;
    width: 100%;
    position: relative;
    float: left;
    clear: both;
}

.articles-recents.grille .listing-item {
    margin-bottom: 60px;
}

.articles-recents.grille .listing-item .image {
    display: inline-block;
    width: 100%;
    margin-bottom: 10px;
}

.articles-recents.grille .listing-item img {
    width: 100%;
    height: auto;
    margin: 0;
    float: left;
}

.articles-recents.grille .listing-item .title {
    font-weight: bold;
}

@media (min-width: 768px) {
    .articles-recents.grille .listing-item {
        width: 48%;
    }

    .articles-recents.grille .listing-item:nth-child(odd) {
        float: left;
        clear: left;
    }

    .articles-recents.grille .listing-item:nth-child(even) {
        float: right;
        clear: right;
    }

    .articles-recents.grille .listing-item .excerpt-dash {
        display: none;
    }

    .articles-recents.grille .listing-item .excerpt {
        overflow: hidden;
        display: -webkit-box;
        -webkit-line-clamp: 3;
        -webkit-box-orient: vertical;
    }
}

De cette façon, vous obtiendrez un affichage réactif qui fonctionne sur les appareils mobiles:

liste articles web reactif mobile

Ainsi que sur les tablettes et les ordinateurs personnels:

liste articles web reactif desktop

Notez qu’il est aussi possible d’invoquer un shortcode en dehors d’un post ou d’une page à l’aide de PHP. Par exemple, il est possible d’afficher une liste d’articles dans une barre latérale en insérant le contenu suivant à l’endroit approprié dans votre thème:

<?php
echo do_shortcode('[display-posts orderby="modified"]');
?>

Ceci dit, il existe bien d’autres extensions qui permettent de lister vos articles si vous prenez le temps de chercher.

Que ce soit à l’aide d’un plug-in ou de code PHP, il est possible de trier et de filtrer les articles de multiples façon. Il est auss possible d’afficher des informations supplémentaires telles que la date, l’auteur, et l’extrait.

Vous pouvez consulter la liste complète des paramètres ici.

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.