Par défaut, votre page de blog WordPress principale affiche vos publications les plus récentes par ordre décroissant de date. Mais si vous utilisez des catégories sur votre site et que vos lecteurs voudront voir les nouveautés de chaque catégorie, vous voudrez peut-être que votre page de blog ait un aspect différent..
Dans ce tutoriel, je vais vous montrer comment faire exactement cela. Je montrerai comment:
Pour suivre ce tutoriel, vous aurez besoin de:
La première étape consiste à configurer le thème. Je vais créer un thème enfant du thème Twenty Fourteen, avec seulement deux fichiers: style.css
et index.php
.
Voici ma feuille de style:
/ * Nom du thème: Affiche le message le plus récent dans chaque catégorie. URI du thème: http://code.tutsplus.com/tutorials/display-the-most-recent-post-in-each-category--cms-22677 Version: 1.0.0 Description: thème associé au didacticiel pour l’affichage du dernier message publié dans une taxonomie pour Tutsplus, à l’adresse http://bitly.com/14cm0yb Auteur: Rachel McCollin Auteur URI: http://rachelmccollin.co.uk Licence: GPL-3.0 + Licence URI: http://www.gnu.org/licenses/gpl-3.0.html Chemin d'accès au domaine: / lang Domaine de texte: tutsplus Modèle: vingt-quatorze * / @import url ('… / vingt-quatre / par style .css ');
Je reviendrai plus tard sur ce fichier pour ajouter du style, mais pour le moment, tout est prévu pour que WordPress reconnaisse le thème de l'enfant..
Comme je veux que la page principale de mon blog affiche le dernier message de chaque catégorie, je vais créer un nouveau index.php
déposer dans mon thème enfant.
Je vais d'abord copier le index.php
fichier de Twenty Fourteen et éditez la boucle et tout autre contenu pour qu'il ressemble à ceci:
La première étape consiste à identifier les catégories de votre blog. Immédiatement après l'ouverture Cela utilise le Alors j'utilise Vous devez maintenant définir les arguments de votre requête. Dans les accolades, ajoutez ceci: Cela ira chercher un seul poste dans la catégorie actuelle. Ensuite, insérez votre requête en utilisant le Ceci affichera l’image, le titre et l’extrait présentés pour chaque article, chacun étant entouré d’un lien.. Voyons à quoi cela ressemble maintenant: Comme vous pouvez le constater, il y a un problème. Ma page affiche le message le plus récent dans chaque catégorie, mais elle duplique des messages, car parfois, ce sera le plus récent dans plus d'une catégorie. Corrigeons ça. Au-dessus de la ligne où vous avez ajouté le Cela crée un tableau vide appelé Ensuite, ajoutez une nouvelle ligne en dessous de l’opting de votre requête afin que les deux premières lignes ressemblent à ceci: Ceci ajoute l'ID du poste actuel au Enfin, ajoutez un nouvel argument à vos arguments de requête pour éviter de générer des publications dans ce tableau. Vos arguments vont maintenant ressembler à ceci: Cela utilise le Sauvez votre C'est mieux! Maintenant, vos messages ne sont pas dupliqués. Pour le moment, tout est un peu étalé, avec les images présentées au-dessus du titre et de l'extrait de l'article. Ajoutons du style pour faire flotter l'image vers la gauche. Dans votre thème Maintenant, le contenu s’adapte plus bien à la page et est mieux présenté: Vous pouvez adapter cette technique pour travailler avec différents types de contenu ou taxonomies. Par exemple: Il peut parfois être utile d’afficher les derniers articles de votre blog d’une autre manière que dans un ordre chronologique. Ici, j'ai présenté une technique permettant d'afficher le dernier message dans chacune des catégories de votre blog, en veillant à ce que les messages ne soient pas dupliqués s'ils sont dans plusieurs catégories..get_categories ()
fonction pour récupérer une liste des catégories du blog. Par défaut, cela sera récupéré dans l'ordre alphabétique et les catégories vides ne seront pas incluses. Cela fonctionne pour moi, donc je n’ajoute aucun argument supplémentaire.foreach ($ categories as $ catégorie)
Indiquer à WordPress de parcourir chacune de ces catégories et d'exécuter le code à l'intérieur des accolades. La prochaine étape consistera à créer une requête qui s'exécutera pour chacune de ces catégories..Définir des arguments de requête
$ args = array ('cat' => $ category-> term_id, 'post_type' => 'post', 'posts_per_page' => '1',);
Lancer la requête
WP_Query
classe:$ query = new WP_Query ($ args); if ($ query-> have_posts ()) ?>
Dernier en prénom; ?>:
have_posts ()) $ query-> the_post (); ?> ">
→', 'vingt quatorze' ) ); ?> Éviter les doubles emplois
get_categories ()
fonction, ajoute cette ligne:$ do_not_duplicate = array ();
$ do_not_duplicate
, que nous utiliserons pour stocker l'identifiant de chaque publication au fur et à mesure de sa sortie, puis pour vérifier si l'identifiant de toute publication interrogée ultérieurement se trouve dans ce tableau.have_posts ()) $ query-> the_post (); $ do_not_duplicate [] = $ post-> ID; ?>
$ do_not_duplicate
tableau.$ args = array ('cat' => $ category-> term_id, 'post_type' => 'post', 'posts_per_page' => '1', 'post__not_in' => $ do_not_duplicate);
'post__not_in'
argument qui recherche un tableau d'identifiants post.index.php
déposer et regarder à nouveau sur la page de votre blog:Ajout de style
style.css
fichier, ajoutez ce qui suit:.listage h2 margin-left: 10px; .category-listing img float: left; marge: 10px 2%; .category-listing .entry-title clear: none;
Adapter cette technique à différents types de contenu
get_categories ()
avec get_terms ()
et changer le 'chat'
argument de requête à celui qui recherche des termes de taxonomie.'post_type' => 'post'
argument dans vos arguments de requête avec votre type de post.pour chaque
instructions pour exécuter plusieurs boucles.single.php
page pour afficher un lien vers le dernier message de chaque catégorie après le contenu du message. Si vous procédez ainsi, vous devrez ajouter l’ID de la page en cours d’affichage au $ do_not_duplicate
tableau.Résumé