如何解决如何显示自定义帖子类型的分类?
这里我们注册了 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);
}
这是我们添加CPT的循环,我们如何在此处显示分类类别?
<?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; ?>
我想显示如下内容: 标题1 类别1
标题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; ?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。