我想在Wordpress中获取一个帖子的类别。
我目前所处的观点有更多帖子,我可以访问帖子ID
(由于某种原因,这是一个字符串)。
我已尝试过这些功能,但他们没有或不正确的数据回来了:
get_the_category($result->ID)
wp_get_post_categories($result->ID)
get_category(wp_get_post_categories($result->ID)[0])->name
get_the_category_list(intval($result->ID))
以及各种其他荒谬的功能和用户建议。
(其中$result->ID
会产生string (4) '1029'
我只想要一些函数从帖子的整数值中获取一个简单字符串中的帖子类别。
请保持答案简单,我对Wordpress没有多少经验。 (我确实有使用PHP和其他框架的合理经验)
答案 0 :(得分:2)
获取特定帖子ID的所有类别的构造取决于您是否在the Loop。
假设:我将假设$result->ID
是帖子ID。
您使用get_the_category
,这是get_terms()
的包装器。像这样使用它:
$categories = get_the_category( (int) $result->ID );
它会为每个指定的术语(类别)提供一组WP_Term
个对象。
你也可以像这样使用wp_get_post_categories
:
wp_get_post_categories( (int) $result->ID );
此构造是wp_get_object_terms
的包装器。它返回一个指定的术语ID数组。然后,您必须使用get_term( $term_id );
这样的每个术语ID获取类别:
foreach( (array) wp_get_post_categories( (int) $result->ID ) as $term_id ) {
$category = get_term( $term_id );
// do stuff.
}
选项1是更好的选择,因为您可以获得术语对象的数组而无需执行foreach
循环。
如果您没有在SQL结果中返回类别,请在后端检查帖子ID实际上是否有类别。
答案 1 :(得分:0)
使用此代码获取类别
全球$ post; $ category_detail = get_the_category($ post-> ID);`