最近幫一個(gè)朋友寫(xiě)企業(yè)類(lèi)主題,需要對(duì)產(chǎn)品設(shè)定一個(gè)專(zhuān)門(mén)的 post type 名叫 product,為了管理方便性,我對(duì) product 設(shè)置了專(zhuān)門(mén)的分類(lèi)類(lèi)型和標(biāo)簽類(lèi)型,分類(lèi)類(lèi)型為 product_cat(WordPress 本身的分類(lèi)類(lèi)型為 category)。
為何要用 get_term_link?:
新類(lèi)型的分類(lèi)是無(wú)法用 <?php echo get_category_link( $category_id ); ?> 輸出分類(lèi)鏈接地址的,需要用 get_term_link() 函數(shù),此函數(shù)用法如下:
<?php get_term_link( $term, $taxonomy ); ?>
具體參考 WordPress Codex:http://codex.wordpress.org/Function_Reference/get_term_link
問(wèn)題:
舉個(gè)例:
- 自定義分類(lèi)ID的變量為 $term,$term 是根據(jù)后臺(tái)設(shè)置而改變的,為了方便說(shuō)明,這里假定后臺(tái)參數(shù)為 $custom_term = 8
- 我要獲取自定義分類(lèi)ID為 $term 的分類(lèi)鏈接地址,那么按照官方說(shuō)明應(yīng)該是:
<?php
$term = $custom_term;
echo get_term_link( $term, 'product_cat');
?>
看似沒(méi)錯(cuò),但問(wèn)題來(lái)了,這樣會(huì)返回錯(cuò)誤:
Catchable fatal error: Object of class WP_Error could not be converted to string in.。沒(méi)錯(cuò)啊,直接用 echo $term; 輸出結(jié)果的確是 8,這就讓人郁悶了……
不過(guò)如果你直接這樣:
<?php echo get_term_link( 8, 'product_cat'); ?>
又能正常工作。
解決方法:
在 WordPress Codex 打轉(zhuǎn)時(shí),無(wú)意中看到國(guó)外朋友也碰到這個(gè)問(wèn)題,然后他自己解決了,頓悟……傳送門(mén) 》
原來(lái)是變量類(lèi)型問(wèn)題,這 get_term_link 函數(shù)和其它常用的 WordPress 函數(shù)不同,不會(huì)自己轉(zhuǎn)換變量類(lèi)型,你得先把字符類(lèi)轉(zhuǎn)換為整數(shù)才能正常工作,好Orz的函數(shù)!
下面這樣就能正常工作:
(坐在沙發(fā)上的Bolo注:intval($term, 10)會(huì)更好,不然$term值太大的時(shí)候會(huì)有進(jìn)制轉(zhuǎn)換問(wèn)題,要么就用(int)$term)
<?php
$term = $custom_term;
echo get_term_link( intval($term), 'product_cat');
?>
所以,以后遇到類(lèi)似這郁悶的函數(shù),就要考慮是不是變量數(shù)據(jù)類(lèi)型問(wèn)題了。
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄