在Wordpress中返回类别的名称

时间:2015-04-16 14:48:25

标签: wordpress

我有一个自定义帖子类型的循环,一切正常,但我无法返回帖子分配给它的实际类别名称。

我有以下代码:

<?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。我想我的问题是别的吗? 非常感谢提前。

3 个答案:

答案 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;