如何获取当前帖子的类别ID?

时间:2016-11-30 作者:jrcollins

我需要获取循环外当前帖子的类别id。首先,我根据帖子id获取类别:

global $wp_query;
$postcat = get_the_category( $wp_query->post->ID );
现在如何获取类别id?我试过:$cat_id = $postcat->term_id; 但它不起作用。

5 个回复
最合适的回答,由SO网友:swibo 整理而成
function catName($cat_id) {
    $cat_id = (int) $cat_id;
    $category = &get_category($cat_id);
    return $category->name;
}
function catLink($cat_id) {
    $category = get_the_category();
    $category_link = get_category_link($cat_id);
    echo $category_link;
}

function catCustom() {
   $cats = get_the_category($post->ID);
    $parent = get_category($cats[1]->category_parent);
    if (is_wp_error($parent)){
        $cat = get_category($cats[0]);
      }
      else{
        $cat = $parent;
      }
    echo \'<a href="\'.get_category_link($cat).\'">\'.$cat->name.\'</a>\';    
}

USE <a href="<?php catLink(1); ?>"> <?php catName(1); ?>

SO网友:GKS

当您使用get_the_category() 函数来获取类别的数据,它返回对象的数组,因此您必须通过传递数组键来访问类别id,如下所示$postcat[0]->term_id

global $post;
$postcat = get_the_category( $post->ID );

// try print_r($postcat) ;  

if ( ! empty( $postcat ) ) {
    echo esc_html( $postcat[0]->name );   
}
希望这有帮助!

SO网友:cameronjonesweb

以前的帖子我知道,但是wp_get_post_categories 很可能是你想要的。

$cats = wp_get_post_categories( get_the_ID(), array( \'fields\' => \'ids\' ) );
这将返回一个类别ID数组,如下所示

array (size=3)
  0 => int 13
  1 => int 15
  2 => int 120
因此,如果您只需要一个类别ID,则可以从类别ID数组中的第一个键获得该ID。

$category_id = $cats[0];

SO网友:Jan Desta

对Govind Kumar答案的改进,如提问者所问category ID, 不是类别名称。类别ID的对象的属性名称为“cat_ID“。

// get cat ID for general view
$postcat = get_the_category( $query->post->ID );
if ( ! empty( $postcat ) ) {
 echo $postcat[0]->cat_ID;
}

SO网友:Nguyễn Tiến Dũng

global $post;
$postcat = get_the_category( $post->ID );
    if ( ! empty( $postcat ) ) {
       foreach ($postcat  as $nameCategory) {
           echo $nameCategory->name .\' \';   
         }                                      
    }?>