WordPress中函數get_term_link的參數怎麼設定?
WordPress中函數get_term_link的參數設定問題
#推薦:《wordpress教學》
最近幫一個朋友寫企業類主題,需要為產品設定一個專門的post type 名叫product,為了管理方便性,我對product 設定了專門的分類類型和標籤類型,分類類型為product_cat(WordPress 本身的分類類型為category )。
為何要用get_term_link?:
新類型的分類是無法用234ca7dc13b15dc5213cebe0fb8e36e8 輸出分類連結位址的,需要用get_term_link() 函數,此函數用法如下:
<?php get_term_link( $term, $taxonomy ); ?>
具體參考WordPress Codex:http://codex.wordpress.org/Function_Reference/get_term_link
問題:
##舉舉例: - 自訂分類ID的變數為$term,$term 是根據背景設定而改變的,為了方便說明,這裡假定後台參數為$custom_term = 8 -我要取得自訂分類ID為$term 的分類連結位址,那麼依照官方說明應該是:<?php $term = $custom_term; echo get_term_link( $term, 'product_cat'); ?>看似沒錯,但問題來了,這樣會回傳錯誤: # Catchable fatal error: Object of class WP_Error could not be converted to string in.。沒錯啊,直接用 echo $term; 輸出結果的確是 8,這就讓人鬱悶了… 不過如果你直接這樣:
<?php echo get_term_link( 8, 'product_cat'); ?>又能正常運作。
解決方法:
在WordPress Codex 打轉時,無意中看到國外朋友也碰到這個問題,然後他自己解決了,頓悟…傳送門》 原來是變數類型問題,這get_term_link 函數和其它常用的WordPress 函數不同,不會自己轉換變數類型,你得先把字元類別轉換為整數才能正常運作,好Orz的函數! 下面這樣就能正常運作: (坐在沙發上的Bolo註:intval($term, 10)會更好,不然$term值太大的時候會有進制轉換問題,要嘛就用(int)$term)<?php $term = $custom_term; echo get_term_link( intval($term), 'product_cat'); ?>所以,以後遇到類似這鬱悶的函數,就要考慮是不是變數資料型別問題了。 折騰玩(完)。
以上是WordPress中函數get_term_link的參數怎麼設定的詳細內容。更多資訊請關注PHP中文網其他相關文章!