最近帮一个朋友写企业类主题,需要对产品设定一个专门的 post type 名叫 product,为了管理方便性,我对 product 设置了专门的分类类型和标签类型,分类类型为 product_cat(WordPress 本身的分类类型为 category)。
为何要用 get_term_link?:
新类型的分类是无法用 <?php echo get_category_link( $category_id ); ?> 输出分类链接地址的,需要用 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 的参数问题
- 本文链接:https://zww.me/archives/25652
- 发布时间:2012年05月24日 10:18
- 版权声明:除非注明,文章均为 zwwooooo 原创,转载请以链接形式标明本文地址!
intval($term, 10)会更好,不然$term值太大的时候会有进制转换问题,要么就用(int)$term
@Bolo
感谢提醒,木有系统去学php就是这样乱用了
你在外面学习,我们在你这学习。。
@咚门
大家都在互联网下学习,哈
有时候遇到这种问题,还真不好找原因,弱类型语言,调试起来也比较麻烦。
@新号外
主要是官方说明也不详细,总不能老是去看源码吧
请问新建立的分类在后台如何添加分类内容?
@airoschou
新建立的分类会有菜单的,除非你定义成隐藏。
看得有点似懂非懂,有空在本机上做做测试,网站上线后基本没摸过代码了。。。
@就要去海淘
有需要才去折腾
时常整理是好事啊
@axiu
这次遇到的问题真多,总算忙完了,Orz
wp的函数挺多的。经常需要看文档的。
@疯子
对啊,谁记得了那么多
话说这个错误提示和Java挺像的,提看就是数据类型转换问题了
@混乱羽翼
哈,官方文档没说详细
玩法不同,哈哈。
有没有想过出 html5主题,我最近一直想,所以才想到本地调试的,但是总觉得自己做出来的效果又累,到最后又达不到自己的要求。
@郑永
懒得学,目前不是主流。最多也就转换下,但总觉得是多余的。如果你想面对手机,可以搞一下。
@zwwooooo
你说的对,哈哈,有些网站设计者会追求时尚,不过貌似你说的没错,目前感觉是多余的,为什么一定要那样做。
@zwwooooo
说错了, 是追求前线。呵呵
@郑永
可以尝试,但不必特意追求,我个人觉得。
很多文档内容只是要用的时候才去搜索它。
@niuhuifei
当然,谁会特意去记住呢?又不是国内教育。
好吧,就算你讲解得这么详细,我也是似懂非懂。
@Firm
因为你不需要,所以无需了解。
低调路过,是懂非懂
感觉你每天花了好多时间在研究wp啊!
@huangjun
为什么你会说每天呢?每天大量生活琐事,有孩子的你懂的。
让你焦头烂额的事情我也用不到,不操心了
@平板电脑推荐
哈哈,用不到无需折腾
之前也碰到过这个问题,不过想了办法绕过了就木有管了,不过问题留着肯定会出事的,多谢大叔讲解。=w=
@小邪
其实我觉得WP Codex太不负责任了。
@zwwooooo
是的,好多地方不对头,以后留意一下记录下来。
@小邪
真不明白WP为何不完善这些文档,故意的?
我只看看,我不说话。
上次我弄这个链接 弄了好久都弄不起来
请教,自定义了分类类型:如国家,在后台新建分类名称:中国,美国,日本,印度,用什么函数在前台才能罗列出这些分类名称?
@tiancool
参考 wordpress “分类列表”函数吧,这些直接搜索就能找到答案,而且大量中文教程。
我曹好使,百度搜索get_term_link 第一个就是这个,我就纳闷了为啥明明好好的就是不显示。。
@梯子铺 恭喜发财!新年快乐!
解决就好。