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

Posted

技术标签:

【中文标题】获取活动页面的当前类别 ID【英文标题】:Get current category ID of the active page 【发布时间】:2012-02-08 10:05:31 【问题描述】:

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

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

$category 例如显示“娱乐”。但我还需要“娱乐”的ID。我该怎么办?

【问题讨论】:

是普通分类页面还是自定义页面模板? 这是一个自定义分类法 - 尝试在名为 taxonomy-event-categories-entertainment.php 的文件上使用它 【参考方案1】:

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

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

如果您想在任何页面上获取任何特定类别的类别 ID,请尝试使用:

$category_id = get_cat_ID('Category Name');

【讨论】:

正是我想要的。如果您要创建通用类别模板,则比上面的答案更好,因为您只获得页面将显示的类别,而不是上面的多类别数组。 它非常适合我。我在获取 ID 时遇到了问题,并且对我来说工作得很好。节省时间:) 需要替换正确答案!标记为正确的答案误导了我。 这个答案有一些不必要的代码。第一行代码通过使用一个参数 - CATEGORY ID 获取 get_category 函数中的完整类别数据(因为这是 get_query_var('cat') 返回的内容)。第二行代码实际上是从数据中检索 id。这意味着这里完全没有使用 get_category 函数,如果有人只想要 id,那么应该使用 get_query_var('cat')! 谢谢,这对我也有帮助!【参考方案2】:

你可以试试get_the_category():

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

【讨论】:

$category[0]->cat_ID 是准确的。 这个方法实际上是检查页面上第一个帖子的第一个类别。如果没有帖子或者第一个帖子有多个类别,这将失败或返回错误信息。 我同意@JordanEldredge,这将返回不正确的信息。 这将返回页面第一个帖子的第一个类别。 如果查看的页面是子类,也会失败。检查$categories 数组的输出。【参考方案3】:

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

$cat_id = get_query_var('cat');

【讨论】:

这看起来很完美。 Ram Mehar Deswal 的回答是否有缺点? 这实际上是可行的解决方案,它将显示查看页面的类别。 @dewd 在 Ram Mehar Deswal 的回答中查找 Bartosz Górski 的评论。他是完全正确的,这里的答案可以满足您的所有需求。 @honk31 感谢您向我指出你是个好公民! :) get_query_var( 'cat' ) 对我来说是假的【参考方案4】:

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

$current_category = get_queried_object();

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

【讨论】:

不错,以前没见过这个。 如果结果不是预期的,调用wp_reset_query();恢复默认的WP_Query实例。 这实际上是我发现的最有用的 Wordpress 功能。它无处不在:页面、文章、类别等。【参考方案5】:

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

我认为在分类页面中获取猫 ID 最直接、最简单的方法是:

$wp_query->query_vars['cat']

干杯

【讨论】:

完美!谢谢。【参考方案6】:

如果您需要类别 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();

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

【讨论】:

【参考方案7】:

我在寻找您所问的内容时发现了这个问题。不幸的是,您接受了一个错误的答案。为了其他试图实现我们想要实现的目标的人,我想我会发布正确的答案。

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

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

【讨论】:

【参考方案8】:

我将它用于类别模板页面中的面包屑:

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

【讨论】:

【参考方案9】:

另类 -

 $catID = the_category_ID($echo=false);

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

【讨论】:

仅供参考:此功能已被弃用。【参考方案10】:
$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;
  

【讨论】:

【参考方案11】:

在上面尝试了寻找帖子的猫 ID 的解决方案,但没有任何效果,改用以下方法:

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

【讨论】:

【参考方案12】:

这是一种获取类别元数据的有效方法,如果您想在前端打印出来,还有 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
      ``
    
    
     ?>

【讨论】:

你好 Hemant Adhikari。请将您帖子中的文字与代码分开。 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案13】:

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

$category_id = get_the_category( get_the_ID());
$cat_id      = get_category($category_id[0]->term_id);

【讨论】:

以上是关于获取活动页面的当前类别 ID的主要内容,如果未能解决你的问题,请参考以下文章

PHP Wordpress:获取当前的类别ID和名称

PHP Wordpress - 获取当前类别名称和/或ID

获取当前类别ID和名称

Wordpress-获取当前类别名称和/或ID

Action怎样获取页面的值呢?

WordPress 博客,仅对当前页面使用存档?