Old

WordPress 函数 get_term_link 的参数问题

最近帮一个朋友写企业类主题,需要对产品设定一个专门的 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' );
?>

所以,以后遇到类似这郁闷的函数,就要考虑是不是变量数据类型问题了。

折腾玩(完)。

zww
or
oooo

声明: 除非注明,ZWWoOoOo文章均为原创,转载请以链接形式标明本文地址
本文地址: http://zww.me/archives/25652

39 comments

  1. Bolo Bolo Google Chrome 19 Google Chrome 19 Mac OS X 10.7 Mac OS X 10.7

    intval($term, 10)会更好,不然$term值太大的时候会有进制转换问题,要么就用(int)$term

    沙发
    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

      @Bolo
      感谢提醒,木有系统去学php就是这样乱用了

  2. 咚门 咚门 Google Chrome 19 Google Chrome 19 Windows 7 Windows 7

    你在外面学习,我们在你这学习。。

    板凳
  3. 新号外 新号外 Firefox 12 Firefox 12 Windows XP Windows XP

    有时候遇到这种问题,还真不好找原因,弱类型语言,调试起来也比较麻烦。

    地板
  4. airoschou airoschou Google Chrome 19 Google Chrome 19 Windows XP Windows XP

    请问新建立的分类在后台如何添加分类内容?

    4楼
  5. 就要去海淘 就要去海淘 Internet Explorer 7 Internet Explorer 7 Windows XP Windows XP

    看得有点似懂非懂,有空在本机上做做测试,网站上线后基本没摸过代码了。。。

    5楼
  6. axiu axiu Google Chrome 19 Google Chrome 19 Windows 7 Windows 7

    时常整理是好事啊

    6楼
  7. 疯子 疯子 Internet Explorer 9 Internet Explorer 9 Windows 7 Windows 7

    wp的函数挺多的。经常需要看文档的。

    7楼
  8. 混乱羽翼 混乱羽翼 Google Chrome 17 Google Chrome 17 Windows 7 Windows 7

    话说这个错误提示和Java挺像的,提看就是数据类型转换问题了

    8楼
  9. 郑永 郑永 Google Chrome 18 Google Chrome 18 Windows XP Windows XP

    玩法不同,哈哈。

    9楼
  10. 郑永 郑永 Firefox 12 Firefox 12 Windows XP Windows XP

    有没有想过出 html5主题,我最近一直想,所以才想到本地调试的,但是总觉得自己做出来的效果又累,到最后又达不到自己的要求。

    10楼
    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

      @郑永
      懒得学,目前不是主流。最多也就转换下,但总觉得是多余的。如果你想面对手机,可以搞一下。

    • 郑永 郑永 Google Chrome 19 Google Chrome 19 Windows XP Windows XP

      @zwwooooo
      你说的对,哈哈,有些网站设计者会追求时尚,不过貌似你说的没错,目前感觉是多余的,为什么一定要那样做。

    • 郑永 郑永 Google Chrome 19 Google Chrome 19 Windows XP Windows XP

      @zwwooooo
      说错了, 是追求前线。呵呵

    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

      @郑永
      可以尝试,但不必特意追求,我个人觉得。

  11. niuhuifei niuhuifei Google Chrome 19 Google Chrome 19 GNU/Linux GNU/Linux

    很多文档内容只是要用的时候才去搜索它。

    11楼
  12. Firm Firm Google Chrome 17 Google Chrome 17 Windows XP Windows XP

    好吧,就算你讲解得这么详细,我也是似懂非懂。

    12楼
  13. 哥特复兴 哥特复兴 Google Chrome 19 Google Chrome 19 Windows 7 Windows 7

    低调路过,是懂非懂

    13楼
  14. huangjun huangjun Maxthon 2 Maxthon 2 Windows XP Windows XP

    感觉你每天花了好多时间在研究wp啊!

    14楼
    • zwwooooo zwwooooo Firefox 12 Firefox 12 Windows 7 Windows 7

      @huangjun
      为什么你会说每天呢?每天大量生活琐事,有孩子的你懂的。

  15. 平板电脑推荐 平板电脑推荐 Firefox 12 Firefox 12 Windows 7 Windows 7

    让你焦头烂额的事情我也用不到,不操心了

    15楼
  16. 小邪 小邪 Google Chrome 19 Google Chrome 19 Mac OS X 10.7 Mac OS X 10.7

    之前也碰到过这个问题,不过想了办法绕过了就木有管了,不过问题留着肯定会出事的,多谢大叔讲解。=w=

    16楼
  17. lzjygn lzjygn Firefox 12 Firefox 12 Windows XP Windows XP

    我只看看,我不说话。

    17楼
  18. NONO NONO Google Chrome 19 Google Chrome 19 Windows 8 Windows 8

    上次我弄这个链接 弄了好久都弄不起来

    18楼
  19. tiancool tiancool Google Chrome 27 Google Chrome 27 Mac OS X 10.8 Mac OS X 10.8

    请教,自定义了分类类型:如国家,在后台新建分类名称:中国,美国,日本,印度,用什么函数在前台才能罗列出这些分类名称?

    19楼
    • zwwooooo zwwooooo Firefox 21 Firefox 21 Windows 8 Windows 8

      @tiancool
      参考 wordpress “分类列表”函数吧,这些直接搜索就能找到答案,而且大量中文教程。

Leave a Reply