Search code examples
wordpresscustom-post-typetaxonomy-terms

Display custom post type categories (terms) in loop


I am using the following code to load all the posts from a custom post type, in this loop I show a title but I also want to show the categories (terms) that are connected to this particular post but I can't seem to make it work

Loop:

<?php $args = array( 'post_type' => 'fotoalbum', 'showposts'=> '-1' ); $the_query = new WP_Query( $args ); ?>
<?php if ( $the_query->have_posts() ) : ?>
<?php $i=1; ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php if($i==1 || $i%3==1) echo '<div class="row">' ;?>

    <div class="col-md-4">
        <a href="<?php the_permalink(); ?>"><?php the_title();?></a><br/>
        ! HERE I WANT THIS POSTS CATEGORY !
    </div>

<?php if($i%3==0) echo '</div>';?>
<?php $i++; endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>

I tried:

<?php echo $term->name; ?>

Solution

  • You need to use get_the_terms() for getting category you can get this by below code... you need to put second argument a custom post-type's category slug you can refer this link https://developer.wordpress.org/reference/functions/get_the_terms/

    
    
        <?php $args = array( 'post_type' => 'fotoalbum', 'showposts'=> '-1' ); $the_query = new WP_Query( $args ); ?>
        <?php if ( $the_query->have_posts() ) : ?>
        <?php $i=1; ?>
        <?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
        <?php if($i==1 || $i%3==1) echo '<div class="row">' ;?>
        <div class="col-md-4">
            <a href="<?php the_permalink(); ?>"><?php the_title();?></a><br/>
            ! HERE I WANT THIS POSTS CATEGORY !
            <?php 
            $terms = get_the_terms( get_the_ID(), 'category-slug' ); // second argument is category slug of custom post-type
            if(!empty($terms)){
            foreach($terms as $term){
                echo $term->name.'<br>';
            }
            }
            ?>
        </div>
    
        <?php if($i%3==0) echo '</div>';?>
        <?php $i++; endwhile; ?>
        <?php wp_reset_postdata(); ?>
        <?php endif; ?>