外贸独立站的底层设计密码WordPress 成品站模板
当前位置:首页>WordPress建站>WordPress开发>文章模板 single.php 获取当前文章所属的分类名称

文章模板 single.php 获取当前文章所属的分类名称

之所以要发这篇文章,是因为这个方法适用于:

  1. WP默认文章分类
  2. 手动添加的自定文章分类
  3. 插件(custom post type ui)添加的自定义文章分类(含taxonomy)

方法目的:在文章模板中,调用该模板的所有文章,可以获得当前文章所属分类的ID,名称。

方法实现:首先在主题的 functions.php 里添加:

/**
 * 文章模板 single.php 获取当前文章所属的分类名称
 * https://www.wpdaxue.com/get-post-category.html
 */
function get_post_category_id($post_ID){
	global $wpdb;
	$sql="SELECT `term_taxonomy_id` FROM $wpdb->term_relationships WHERE `object_id`='".$post_ID."';";
	$cat_id=$wpdb->get_results($sql); 
	foreach($cat_id as $catId){
		$output=$catId->term_taxonomy_id;
	}
	$myCatId=intval($output);//这里就获得当前文章所属分类的分类ID
	$term = get_term( $myCatId, 'taxonomy_name' );//taxonomy_name为自己定义的或者默认的
	echo $term->name;//得到当前文章所属分类的分类名称
}

然后,在文章模板中,添加一句话即可:

<?php if(function_exists('get_post_category_id')) get_post_category_id(get_the_ID()); ?>
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
欢迎关注WordPress大学公众号 WPDAXUE
WordPress开发

WordPress 使用 gettext 钩子替换本地化翻译文本

2013-10-21 7:49:00

WordPress开发

检查 PHP 和 WordPress 的最低版本

2013-12-7 9:49:48

13 条回复 A文章作者 M管理员
  1. 如此即可:
    cat_name;?>

    • 有尖括号也许显示不出。代码这样:
      $the_post_category = get_the_category(get_the_ID()); echo $the_post_category[0]->cat_name;

    • 这个搞定。。

    • 内行啊 谢谢了

  2. 没那么费事,感觉这里有好多东西都不是最好的方法
    $cat = get_the_category(); $cat = $cat[0];
    $cat_id=$cat->cat_ID;

  3. 正好要用到这个功能,但是发现用不了啊,$myCatId的值是能输出了,但是这个是term_taxonomy_id的值,应该是term_id的值才能显示name。我其实不大懂,请高手帮忙看一下怎么改才好。

  4. redy

    我觉得他这个函数的的作用是一口气把这个post相关的 category 和 terms 都找出来。是这样吧?
    默认的话要多次循环
    get_the_terms(id,’taxonomy’); 这个有多少自定义分类就要循环多少次。
    为了要知道有多少 taxonomy 那么还需要再通过其他手段获得所有的taxonomy slug
    get_the_category(id), 这个实际上也就是 特定去 category 这种taxonomy 里面找了以下

    我想使用原生方法 应该是这样吧。

    我觉得他这个函数还是挺有用的,但是函数名字起的不好,容易让一目十行的大侠误解。

    要是谁有更好的办法,也提出看法吧,这样我也好学一招。

  5. 挺好的,正学习着

  6. 需要这么麻烦吗,消耗性能,当前post_id是可以获取吧,有个函数get_the_category($post_id),这里面有类别的所有信息

  7. 和 get_the_category get_the_terms有啥区别?

    • 多公布个方法而已

    • 有区别,这个方法不建议用,有自带的方法何必再弄一个,多一次查询

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索