This guide is going to dive into some PHP templating in WordPress.
I just got finished making a complex website that needed to display a long list of custom post types in a table (and do a bunch of other stuff).
The end result turned out really nice, but I had the hardest time finding a simple explanation, of how you can show a list of custom post types with its custom taxonomy.
I figured I would save myself a lot of time in the future if I documented what I did (and probably save somebody else some time, as well).
Display Custom Posts and Taxonomies on a Page
I created a custom post type for domains, along with a custom taxonomy.
Then I made a unique PHP template named ‘Domain List’ template-domainlist.php to write my custom query code.
The following is a simplified version of my display table…
<?php // Query Domain Post Types $posts = get_posts(array( 'posts_per_page' => -1,'post_type' => 'domain', )); if( $posts ): ?> <table> <?php foreach( $posts as $post ): setup_postdata( $post ); $domain = get_the_title(); $terms = get_the_terms( $post->ID, 'domain_cat' ); foreach ( $terms as $term ); ?> <tr> <td><?php echo $domain; ?></td> <td><a href="<?php echo esc_url( get_term_link( $term ) ) ?>"> <?php echo esc_html( $term->name ); ?> </a> </td> </tr> <?php endforeach; ?> </table> <?php wp_reset_postdata(); ?> <?php endif; ?>
To use this code, replace ‘domain’ ( where it says post_type’ => ‘domain’) with your own custom post type. Then replace ‘domain_cat‘ with your own custom taxonomy name.
The result will look something like this…
Of course, you don’t need to put it in a table. Replace <table> with <section>, <tr> with <div>, and <td> with <p> and you’ll have the framework for something entirely different.
So, what do you think? Was this code helpful? Let us your your thoughts in the comments below…