获取活动页面的当前类别 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的主要内容,如果未能解决你的问题,请参考以下文章