Création d'une liste d'articles dans les mêmes catégories que l'actuel

Si vous utilisez un blog volumineux, vous devez trouver un moyen d'aider vos lecteurs à trouver le contenu qu'ils vont vouloir lire, en fonction de ce qu'ils lisent ou viennent de lire..

Pour ce faire, vous pouvez utiliser l'un des nombreux plug-ins qui identifient les publications associées. Celles-ci utilisent diverses méthodes pour identifier d’autres publications ayant un contenu similaire à celui en cours, mais parfois elles ne vous donnent pas exactement les résultats souhaités.

Un moyen logique d'identifier les publications telles que celle actuellement affichée consiste à utiliser des catégories, des balises ou des termes de taxonomie. Si vous pouviez identifier les publications dans les mêmes catégories que la publication actuelle, vous pouvez ensuite afficher une liste des publications les plus récentes dans les mêmes catégories, afin d'aider les lecteurs à trouver du contenu associé..

Dans ce tutoriel, je vais vous montrer comment créer un plugin pour le faire. Le plugin vous donnera une fonction que vous ajouterez ensuite à votre single.php fichier modèle pour afficher la liste sous le contenu du message en cours.

Ce dont vous aurez besoin

Pour suivre ce tutoriel, vous aurez besoin de:

  • une installation de développement de WordPress
  • un thème existant avec un single.php fichier modèle
  • un éditeur de code

Configurer le plugin

Commençons par configurer le plugin. Créez un nouveau fichier pour votre plugin, j'appelle le mien tutsplus-related-posts.php.

Dans votre nouveau fichier, ajoutez ce qui suit:

Vous voudrez modifier les détails de l'auteur en vos propres détails, mais cela donne à WordPress ce dont il a besoin pour reconnaître le plug-in et vous permettre de l'activer dans le tableau de bord..

Identifier les catégories du poste actuel

Afin d'identifier d'autres publications avec les mêmes catégories, vous devez obtenir la liste des catégories de la publication actuelle et les ajouter à un tableau..

Commencez par créer la fonction pour contenir votre code, avec quelques initialisations:

fonction tutsplus_related_posts () $ post_id = get_the_ID (); $ cat_ids = array (); 

Maintenant, dans votre fonction, utilisez le get_the_category () fonction pour récupérer un tableau de données relatives aux catégories de la publication actuelle:

$ categories = get_the_category ($ post_id);

La fonction n'a qu'un paramètre, l'identifiant de la publication, qui spécifie qu'il s'agit de la publication en cours dont vous souhaitez obtenir les catégories..

Ensuite, vous devez créer un tableau qui contiendra les identifiants de toutes les catégories:

if ($ categories &&! is_wp_error ($ categories)) foreach ($ categories en tant que $ category) array_push ($ cat_ids, $ category-> term_id); 

Jetons un coup d'oeil à ce que fait ce code:

  • D'abord, il vérifie que $ catégories n'a pas renvoyé null ou une erreur.
  • Ensuite, pour chaque catégorie, il ajoute l'ID au tableau.

Votre fonction va maintenant ressembler à ceci:

fonction tutsplus_related_posts () $ post_id = get_the_ID (); $ cat_ids = array (); $ categories = get_the_category ($ post_id); if ($ categories &&! is_wp_error ($ categories)) foreach ($ categories en tant que $ category) array_push ($ cat_ids, $ category-> term_id); 

Écrire une requête pour générer des publications dans la même catégorie

Maintenant que vous avez un tableau avec les ID de catégorie, vous pouvez l'utiliser comme argument pour une requête afin d'identifier les publications avec ces catégories..

Toujours dans votre fonction, définissez les arguments de la requête:

$ current_post_type = get_post_type ($ post_id); $ args = array ('category__in' => $ cat_ids, 'post_type' => $ current_post_type, 'posts_per_page' => '5', 'post__not_in' => array ($ post_id));

Ces arguments trouveront les publications des mêmes types de publication que l'actuel, dans les mêmes catégories, et excluront la publication actuelle. Je l'ai configuré pour générer cinq publications, mais vous pouvez toujours modifier cela, ou l'un des autres arguments tels que le type de publication si vous avez appliqué des catégories à plusieurs types de publication..

Maintenant, lancez la requête:

$ query = new WP_Query ($ args); if ($ query-> have_posts ()) ?>  

Ceci affiche les titres des articles dans des liens vers eux, dans une liste. 

Ajout de la fonction à votre thème

La dernière étape consiste à ajouter la fonction à un fichier de modèle dans votre thème. J'ai créé un thème pour enfants pour le thème Twenty Fourteen avec un nouveau single.php fichier, et j'ajoute la fonction ici, en dessous du contenu. Il peut être ajouté n'importe où, à condition qu'il soit dans la boucle de publication de WordPress.

Dans votre fichier de modèle, ajoutez les éléments suivants:

tutsplus_related_posts ();

Vous pouvez voir le résultat ci-dessous:

Remarque: le site de démonstration est un peu déroutant car les balises et les catégories sont répertoriées à la fin de chaque message. Notre liste n'utilise pas de balises, mais simplement des catégories, dont chaque article de ce site en a une.

Alternatives: balises et termes de taxonomie

Vous pouvez très facilement modifier cette fonction pour utiliser plutôt des balises ou des termes de taxonomie..

Pour identifier les tags au lieu de catégories, vous devez remplacer le get_the_category () fonctionner avec get_the_tags (), puis remplacez le 'catégorie__in' argument pour la requête avec 'faire'.

Pour identifier les termes de taxonomie, vous utiliseriez get_the_terms () au lieu de get_the_category (), ajouter le slug taxonomie comme second paramètre. Vous devez alors remplacer le 'catégorie__in' argument avec un argument utilisant 'tax_query'.

Vous pouvez également rechercher des publications avec les mêmes termes dans plus d'une taxonomie (y compris les termes et les catégories), en créant deux tableaux et en utilisant deux arguments dans votre requête..

Résumé

Dans ce tutoriel, vous avez appris à identifier les catégories de la publication actuelle, à ajouter leurs identifiants à un tableau, puis à utiliser ce tableau pour exécuter une requête affichant les publications de la même catégorie. Cela vous donne plus de contrôle que ce que vous obtenez de la plupart des plugins de publications associées, et signifie que vous pouvez définir les arguments de votre requête afin que les publications s'affichent exactement comme vous le souhaitez..

Vous pouvez également adapter cette technique pour travailler avec des balises, des termes de taxonomie ou une combinaison de deux ou plus..