Here we register the Spotlights CPT and the taxonomy of the CPT
<?php
/*
* Register Spotlight CPT
*/
add_action( 'init', 'register_spotlights', 0 );
function register_spotlights() {
$spotlight_labels = array(
'name' => _x( 'Spotlights', 'Post Type General Name', '' ),
'singular_name' => _x( 'Spotlight', 'Post Type Singular Name', '' ),
'menu_name' => __( 'Spotlights', '' ),
'parent_item_colon' => __( 'Parent Item:' ),
'all_items' => __( 'All Spotlights', '' ),
'view_item' => __( 'View Spotlight', '' ),
'add_new_item' => __( 'Add New', '' ),
'add_new' => __( 'Add New', '' ),
'edit_item' => __( 'Edit Spotlight', '' ),
'update_item' => __( 'Update Spotlight', '' ),
'search_items' => __( 'Search Spotlight', '' ),
'not_found' => __( 'Not found', '' ),
'not_found_in_trash' => __( 'Not found in Trash', '' ),
);
$spotlight_args = array(
'label' => __( 'Spotlight', '' ),
'description' => __( 'Holds spotlights', '' ),
'labels' => $spotlight_labels,
'supports' => array( 'title', 'thumbnail', 'custom-fields'),
'hierarchical' => false,
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => true,
'show_in_admin_bar' => true,
'menu_position' => 6,
'menu_icon' => 'dashicons-admin-post',
'can_export' => true,
'has_archive' => false,
'exclude_from_search' => false,
'publicly_queryable' => true,
'capability_type' => 'page',
'rewrite' => array( 'slug' => 'spotlight', 'with_front' => false),
);
register_taxonomy(
'category-spotlight',
'spotlight',
array(
'hierarchical' => true,
'labels' => array(
'name' => 'Category',
'singular_name' => 'Category'
),
'show_ui' => true,
'show_admin_column' => true,
'public' => false,
'query_var' => false,
'show_in_rest' => true,
'rewrite' => false
)
);
register_post_type( 'spotlight', $spotlight_args);
}
Here is the loop where we add the CPT, how do we display the taxonomy category here?
<?php
$args = array(
'post_type' => 'spotlight',
'orderby' => 'date',
'order' => 'DESC',
'posts_per_page' => 2
);
$query = new WP_Query( $args );
$taxonomy = 'category-spotlight';
$terms = get_terms($taxonomy); // Get all terms of a taxonomy
if ($query->have_posts()): ?>
<?php while ($query->have_posts()): $query->the_post(); ?>
<div class="category"><?php echo $terms->name; ?></div>
<h3 class="small"><?php the_title(); ?></h2>
<?php endwhile; ?>
<?php endif; ?>
I want to display something like:
Title1
Category1
Title2
Category2
Currently the title for each post is displayed, but not the taxonomy for each post.
How do display the taxonomy under each title?
2
Answers
According to the documentation,
get_terms
will return an array of WP_Term objects or WP_Error. In your code, you have$terms->name
. You’ll need to either have it select the first term found in which case you’ll need$terms[0]->name
, or you’ll need to add some logic to get the correct term you want to display.Additionally, the terms you are loading are not necessarily related to the post. If you want to load the terms used for the post, you’ll need to call
get_the_terms($post, $taxonomy)
to get the associated taxonomy term(s) with the associated post. Once again, it’ll be a return type of an array, so make sure to extract the correct value.Replace your code with this. i hope this work for you.