我有一个自定义帖子类型的循环,一切正常,但我无法返回帖子分配给它的实际类别名称。
我有以下代码:
<?php
$posts = get_posts(array(
'numberposts' => -1,
'post_type' => 'portfolio',
'orderby' => 'menu_order',
'order' => 'ASC'
));
if($posts) {
foreach($posts as $post) {
setup_postdata( $post );
?>
<div>
<div class="mix <?php get_cat_name( ); ?>" ><img src="<?php the_field('portfolio_image'); ?>" alt=""></div> <!-- ACF -->
</div>
<?php
}
}
wp_reset_postdata();
?>
这只是我尝试过的WP Codex功能之一,包括全部使用echo。我想我的问题是别的吗? 非常感谢提前。
答案 0 :(得分:3)
根据codex,此方法的id为 required (https://codex.wordpress.org/Function_Reference/get_cat_name)。遗漏身份证不起作用。
一种解决方案是使用get_the_category($postId)
检索帖子的类别(https://codex.wordpress.org/Function_Reference/get_the_category)。你可以在这里省略postId
POST_ID (整数)(可选)帖子ID。 默认值:$ post-&gt; ID(当前帖子ID)
请注意,该方法返回一个对象 - 而不是类别名称。您可以尝试以下代码来查看它是否正常工作:
<?php
$category = get_the_category();
echo $category[0]->cat_name;
?>
答案 1 :(得分:0)
试试这段代码
<?php $terms = get_the_terms($post->ID, 'TAXONOMY' );
if ($terms && ! is_wp_error($terms)) :
$term_slugs_arr = array();
foreach ($terms as $term) {
$term_slugs_arr[] = $term->name;
}
$terms_slug_str = join( " ", $term_slugs_arr);
endif;
echo $terms_slug_str;?>
答案 2 :(得分:0)
替换您的代码
这
get_cat_name();
到
$categories = get_the_terms($post->ID,'custom-texonomy-name');
$cat = key($categories);
echo $categories[$cat]->name;