web-dev-qa-db-fra.com

Pourquoi in_category ne renverrait qu'un message dans une catégorie spécifique?

Donc ... ce que j'essaie de faire est simple: obtenir le contenu du message pour tous les messages, mais uniquement dans une catégorie donnée. Simple - filtrez la boucle en utilisant in_category. J'ai donc fait ceci (il s’agit en fait d’une version allégée de la boucle que j’essayais de résoudre):

    <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <?php
        if(in_category('7')) {
        the_title();
    }
    ?>
<?php endwhile; ?>
    <!-- post navigation -->
<?php else: ?>
    <!-- no posts found -->
<?php endif; ?>
</div>  <!-- main -->

Voici la capture ... pour la catégorie 7, il ne retourne qu’un seul poste (le plus récent). Pour les autres catégories, je reçois tous les articles de cette catégorie. Supprimer la restriction donne tous les messages. Les postes de la catégorie 7 ne sont affectés à aucune autre catégorie. La création d'une nouvelle catégorie et la réaffectation des publications dans la catégorie 7 ne fonctionnent pas ... mais la création de nouvelles publications et leur affectation à une nouvelle catégorie, puis l'utilisation de CE nouvel ID de catégorie. Mais deux fois maintenant, il a cessé de fonctionner.

Ce code est la boucle complète - il n'y a rien d'autre sur la page en dehors du balisage HTML à ce stade. Je ne vois pas pourquoi le code ne me donnerait pas simplement toutes les publications publiées dans la catégorie 7 (et oui, elles sont toutes définies sur Publiées et Publiques). J'ai une autre page de code qui recherche les publications récentes dans cette catégorie et QUE le code les trouve. Je peux modifier cela et l'utiliser ici, mais je suis curieux de savoir ce qui me manque ici. Pensées?

1
rick gregory

cA devrait etre

in_category(7)

entier, pas de chaîne.

mais une meilleure façon de le faire est:

query_posts('cat=7');
if ( have_posts() ) : while ( have_posts() ) : the_post();

endwhile;
endif;
2
Milo

Le problème est que vous utilisez une balise conditionnelle uniquement après avoir interrogé les publications. Vous obtenez donc des publications de toutes les catégories mais en affichant uniquement celle de la catégorie 7.

pour interroger (sélectionner) uniquement les publications d'une catégorie spécifique, vous devez modifier la requête à l'aide de query_posts () quelque chose comme ça:

query_posts('cat=7');

juste au-dessus de votre boucle avant cette ligne:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
1
Bainternet