问题描述
这里我们注册了 Spotlights CPT 和 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);
}
<?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; ?>
标题2 类别2
当前显示的是每个帖子的标题,但不显示每个帖子的分类。 每个标题下的分类如何显示?
解决方法
根据 documentation,get_terms
将返回 WP_Term 对象或 WP_Error 的数组。在您的代码中,您有 $terms->name
。您需要让它选择找到的第一个术语,在这种情况下您将需要 $terms[0]->name
,或者您需要添加一些逻辑以获得您想要显示的正确术语。
此外,您加载的条款不一定与帖子相关。如果您想加载用于帖子的术语,您需要调用 get_the_terms($post,$taxonomy)
以获取关联帖子的关联分类术语。同样,它将是数组的返回类型,因此请确保提取正确的值。
用这个替换你的代码。我希望这对你有用。
<?php
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
$category_spotlight = get_the_terms( get_the_ID(),'category-spotlight' );
foreach( $category_spotlight as $category_spot ) {
echo $category_spot->name;
}
?>
<?php endwhile; ?>
<?php endif; ?>