web-dev-qa-db-fra.com

Afficher les articles séparés par catégorie dans la page de l'auteur

J'ai créé une page d'auteur en utilisant:

 <?php
  if(isset($_GET['author_name'])) :
  $curauth = get_userdatabylogin($author_name);
  else :
  $curauth = get_userdata(intval($author));
  endif;
 ?>

et ensuite une boucle standard, qui affiche les titres de tous les articles publiés par cet auteur. J'essaie de séparer l'affichage des messages en fonction de la catégorie à laquelle ils appartiennent (1, 2 ou 3). J'ai donc essayé d'utiliser

<?php query_posts('cat=1'); ?>

mais alors tous mes articles de blog sont affichés, pas seulement ceux de l'auteur. Quelque chose ne va certainement pas.

Je sais que je dois utiliser une requête personnalisée lorsqu'il y a plus d'une boucle par publication, mais étant donné que l'utilisation d'une seule requête standard avec le filtre "cat" ne fonctionne pas, je suis un peu perdu.

1
Sergio Majluf

Si vous utilisez un modèle d'auteur, il n'est absolument pas nécessaire de configurer (définir) les paramètres de requête d'auteur, ils seront prêts à être configurés dans l'objet de requête présent sur la page d'auteur.

Vous pouvez également éviter la nécessité de créer de nombreuses requêtes (une par catégorie actuellement), en effectuant une itération sur votre requête, en extrayant les catégories et en stockant les ID de publication associés à des catégories données dans un tableau. Première itération que vous utilisez pour construire le tableau d’ID divisé par nom de catégorie/ID (comme vous le souhaitez), puis rembobinez la requête, parcourez les publications et poursuivez (en ignorant) les résultats qui ne correspondent pas à la première catégorie de votre tableau nouvellement créé. des identifiants de catégorie (ou noms). De nouveau, vous suivez en rembobinant la boucle, puis en l'itérant à nouveau pour chaque catégorie que vous avez dans le nouveau tableau, en continuant (en ignorant) les publications lorsqu'elles ne correspondent pas à l'itération de catégorie actuelle.

Ce n'est pas quelque chose qui fera vraiment sens jusqu'à ce que vous le voyiez, et devient un peu plus complexe si vous catégorisez vos publications en plusieurs catégories (où les catégories peuvent se croiser d'une publication à l'autre), mais cela fonctionnera (sans autre requête) pour la page en cours (évidemment, il ne triera pas l'intégralité du jeu de résultats. Ainsi, même si une page donnée sera triée, ce tri global ne portera pas la somme de toutes les pages du jeu de résultats).

Si vous pensez que la méthode ci-dessus semble utile et que vous n'êtes pas inquiet à propos du problème susmentionné, cela ne me dérange pas de donner un exemple.

0
t31os

Résolu d'une manière beaucoup plus simple

J'ai une boucle pour chaque catégorie que je dois afficher et la requête est construite en utilisant:

<?php query_posts('cat=1&author='.$curauth->ID;); ?>
1
Sergio Majluf