获取活动页面的当前类别ID


Get current category ID of the active page

希望在WordPress中提取特定页面的类别ID,该页面列出了使用该特定类别的所有帖子。尝试了以下操作,但未成功。我可以使用single_term_title获得类别名称。

$category = single_term_title("", false);
$catid = get_cat_ID( $category );

例如,$category显示"Entertainment"(娱乐)。但我也需要"娱乐"的ID。我该怎么做?

如果是类别页面,您可以通过以下方式获取当前类别的id:

$category = get_category( get_query_var( 'cat' ) );
$cat_id = $category->cat_ID;

如果你想在任何页面上获得任何特定类别的类别id,请尝试使用:

$category_id = get_cat_ID('Category Name');

您可以尝试使用get_the_category():

$categories = get_the_category();
$category_id = $categories[0]->cat_ID;

最古老但最快的使用方法是:

$cat_id = get_query_var('cat');

我使用get_queried_object函数来获取category.php模板页面上的当前类别。

$current_category = get_queried_object();

Jordan Eldredge是对的,get_the_category在这里不合适。

我认为上面的一些方法可能有效,但使用get_the_category函数似乎很棘手,可能会产生意想不到的结果。

我认为在类别页面中访问猫ID最直接、最简单的方法是:

$wp_query->query_vars['cat']

干杯

如果您需要类别ID,您可以通过get_query_var获得它,它能够检索所有可公开查询的变量。

$category_id = get_query_var('cat');

以下是获取类别名称的示例

$category_name = get_query_var('category_name');

当然还有强大的get_queried_object

$queried_object = get_queried_object();

即返回完整的分类术语对象(在分类归档页面上使用时)

我在寻找你所问的问题时发现了这个问题。很遗憾,您接受了一个错误的答案。为了其他正在努力实现我们想要实现的目标的人,我想我会发布正确的答案。

$cur_cat = get_cat_ID( single_cat_title("",false) );

正如您所说的single_term_title("", false);正确地返回了类别标题,我不确定为什么您的代码会出现问题;但是上面的代码对我来说是完美的。

我在类别模板页面中为面包屑使用了这个:

$cat_obj = $wp_query->get_queried_object();
$thiscat_id = $cat_obj->term_id;
$thiscat = get_category($thiscat_id);
$parentcat = get_category($thiscat->parent);

替代方案-

 $catID = the_category_ID($echo=false);

EDIT:以上功能已弃用,请使用get_the_category()

我测试了所有这些答案,这是唯一一个适用于所有归档页面类型(包括posts页面)的答案。

$category_id = get_the_category( get_the_ID());
$cat_id      = get_category($category_id[0]->term_id);
$cats = wp_get_post_terms( $post->ID, 'product_cat' );
foreach($cats as $cat){
/*check for category having parent or not except category id=1 which is wordpress default category (Uncategorized)*/
  if($cat->parent != '0' && $cat->term_id != 1){
    echo '<h2 class="link"><a href="'.get_category_link($cat->term_id ).'">'.$cat->name.'</a></h2>';
    break;
  }
}

上面尝试了查找帖子的cat ID的解决方案,但没有成功,而是使用了以下内容:

$obj = get_queried_object();
$c_id = wp_get_post_categories($obj->ID);

如果你想在前端打印,这里有一种有效的方法可以获得类别元数据和HTML:

    <?php
    
    function custom_get_categories() {
      $categories = get_the_category();
      $uncategorised_id = get_cat_ID('Uncategorized');
      $custom_category_link = '';
    
      foreach ($categories as $category) {
        if($category->category_parent == $uncategorised_id || $category->cat_ID == $uncategorised_id) {
          continue;
        }
        
        $custom_category_link = get_category_link($category->cat_ID); ?>
    
        <a href ="<?php echo $custom_category_link ?>"> 
    <?php echo "'n'nCategory ID: " . $category->cat_ID . "'nCategory Name" . $category->name;  ?> </a>
    
        <?php
      }``
    }
    
     ?>