2015-04-16 20 views
0

我有一个自定义帖子类型的循环,所有工作都很好,除非我无法返回该帖子分配给它的实际类别名称。在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食品功能之一。我想我的问题是别的吗? 非常感谢提前。

回答

2

根据codex的id是要求这个方法(https://codex.wordpress.org/Function_Reference/get_cat_name)。退出ID不起作用。

一个解决方案是使用get_the_category($postId)来检索您的帖子的类别(https://codex.wordpress.org/Function_Reference/get_the_category)。你可以离开了这里的帖子ID

POST_ID (整数)(可选)的帖子ID。 默认值:$ post-> ID(当前帖子ID)

请注意,该方法返回一个对象 - 而不是类别名称。你可以试试下面的代码,看看它的工作:

<?php 
$category = get_the_category(); 
echo $category[0]->cat_name; 
?> 
+0

谢谢,但第二个选项只是没有返回 –

+0

@PeteNorris:我添加了一个例子。 – Fred

+0

GEEEENIUS!谢谢 –

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;?> 
+0

谢谢。我把它放在最初的循环中(不知道这是否是正确的地方),没有任何东西被返回。 –

0

替换代码

get_cat_name();

$categories = get_the_terms($post->ID,'custom-texonomy-name');     
$cat = key($categories); 
echo $categories[$cat]->name; 
+0

其中取代自定义文件名称与您的注册文本名称 –

+0

请尝试更新的代码..现在应该工作... –

相关问题