2013-01-02 6 views
1

Ok, donc j'ai un modèle Wordpress que j'ai créé qui n'affiche que les publications qui ont la catégorie "entraînement" qui lui est associée. Dans la boucle qui les affiche, je veux que les catégories de la publication spécifique soient répertoriées.Afficher la catégorie d'un article dans la boucle wordpress?

Je pensais quelque chose comme ça fonctionnerait:

$id = get_the_ID(); 
$cats = wp_get_post_categories($id); 

Mais je ne sais pas comment faire écho sur l'écran. Quelqu'un at-il une idée de comment je peux afficher les catégories de chaque poste dans la boucle? Tous les articles que j'ai regardés ont seulement montré comment afficher toutes les catégories, pas afficher les catégories associées à un article spécifique.

Voici la boucle que j'ai:

<div class="query"> 
<b><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></b> 
    <?php 
     $id = get_the_ID(); 
     $cats = wp_get_post_categories($id); 
    ?> 
</div> 
<?php endwhile; ?> 

Répondre

6

écho Juste le nom:

echo $cats[0]->name; 

Si vous voulez afficher un lien, utilisez ceci:

<a href="<?php echo get_category_link($cats[0]->cat_ID); ?>"> 
    <?php echo $cats[0]->name; ?> 
</a> 

Note: au lieu de wp_get_post_categories($id), vous pouvez simplement utiliser get_the_category().


Mise à jour: si vous souhaitez afficher toutes les catégories, la boucle juste à travers eux:

<?php foreach ($cats as $cat): ?> 

    <a href="<?php echo get_category_link($cat->cat_ID); ?>"> 
     <?php echo $cat->name; ?> 
    </a> 

<?php endforeach; ?> 
+0

A travaillé comme je le voulais! Merci –

+0

@ThomasNolan - Bien sûr. Parcourez simplement le tableau '$ cats'. J'ai mis à jour ma réponse pour cela aussi. –

2

Merci Joseph. J'ai étendu votre code afin que le mot «Catégorie» devienne «Catégories» lorsqu'il y a plus d'une catégorie. Il peut y avoir une meilleure façon de le faire, mais je ne pouvais pas le trouver nulle part :)

<p> 
    <?php 
    $id = get_the_ID(); 
    $cats = get_the_category($id); 
    echo (count($cats) == 1 ? 'Category: ' : 'Categories: '); 
    $c = 0; $n = 0; 
    $c = count($cats); 
    foreach ($cats as $cat): 
     $n++; ?> 
     <a href="<?php echo get_category_link($cat->cat_ID); ?>"> 
      <?php echo $cat->name; echo ($n > 0 && $n < $c ? ', ' : ''); ?> 
     </a> 
    <?php endforeach; ?> 
</p> 
+0

Merci c'est exactement ce dont j'avais besoin! – tiaNaturally

1

Obtenez la catégorie de poste si vous avez un post_type personnalisé

<?php 
$categories = get_the_terms($post->ID, 'taxonomy'); 
// now you can view your category in array: 
// using var_dump($categories); 
// or you can take all with foreach: 
foreach($categories as $category) { 
    echo $category->term_id . ', ' . $category->slug . ', ' . $category->name . '<br />'; 
} ?> 

click here for detail

0

Si quelqu'un d'autre a besoin d'aide pour cela, vous pouvez utiliser cette boucle à l'intérieur des postes:

<p><?php _e('Category: ', 'themename'); the_category(', '); // Separated by commas ?></p> 
Questions connexes