之所以要發(fā)這篇文章,是因為這個方法適用于:
- WP默認文章分類
- 手動添加的自定文章分類
- 插件(custom post type ui)添加的自定義文章分類(含taxonomy)
方法目的:在文章模板中,調(diào)用該模板的所有文章,可以獲得當前文章所屬分類的ID,名稱。
方法實現(xiàn):首先在主題的 functions.php 里添加:
/**
* 文章模板 single.php 獲取當前文章所屬的分類名稱
* http://www.ydqwiac.cn/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()); ?>
聲明:本站所有文章,如無特殊說明或標注,均為本站原創(chuàng)發(fā)布。任何個人或組織,在未征得本站同意時,禁止復制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進行處理。






如此即可:
cat_name;?>
有尖括號也許顯示不出。代碼這樣:
$the_post_category = get_the_category(get_the_ID()); echo $the_post_category[0]->cat_name;
這個搞定。。
內(nèi)行啊 謝謝了
沒那么費事,感覺這里有好多東西都不是最好的方法
$cat = get_the_category(); $cat = $cat[0];
$cat_id=$cat->cat_ID;
正好要用到這個功能,但是發(fā)現(xiàn)用不了啊,$myCatId的值是能輸出了,但是這個是term_taxonomy_id的值,應該是term_id的值才能顯示name。我其實不大懂,請高手幫忙看一下怎么改才好。
我覺得他這個函數(shù)的的作用是一口氣把這個post相關的 category 和 terms 都找出來。是這樣吧?
默認的話要多次循環(huán)
get_the_terms(id,’taxonomy’); 這個有多少自定義分類就要循環(huán)多少次。
為了要知道有多少 taxonomy 那么還需要再通過其他手段獲得所有的taxonomy slug
get_the_category(id), 這個實際上也就是 特定去 category 這種taxonomy 里面找了以下
我想使用原生方法 應該是這樣吧。
我覺得他這個函數(shù)還是挺有用的,但是函數(shù)名字起的不好,容易讓一目十行的大俠誤解。
要是誰有更好的辦法,也提出看法吧,這樣我也好學一招。
挺好的,正學習著
需要這么麻煩嗎,消耗性能,當前post_id是可以獲取吧,有個函數(shù)get_the_category($post_id),這里面有類別的所有信息
和 get_the_category get_the_terms有啥區(qū)別?
多公布個方法而已
有區(qū)別,這個方法不建議用,有自帶的方法何必再弄一個,多一次查詢