某些主题在 WP 3.0 无法调用分类名称的原因及解决方法

2010年08月23日 15:40 | WordPress | 标签: , ,

由于多方面原因,比较忙乱。很久没更新过博客,也没关注WordPress的动态。
近日出差归来,主题iNews-v2的留言中看到网友反映在WP 3.0以上版本出现异常。
经尝试,确实存在“无法调用分类名称”的问题。原本的效果是这样的:

cat-title

这亦是大家比较熟悉常见的CMS类栏目元素构成:分类名称、分类文章列表、更多。

但在WordPress 3.0.x 版本中,iNews-v2(及其它某些主题)无法自动调用分类名称。
即是:上图中的红圈圈位置不会自动显示分类名称。

原因所在:函数 single_cat_title 在 3.0 已有变化

遇到这个问题的主要是某些(只是某些)“CMS”类主题,由于栏目位置需要自动调用分类名称,而使用了 single_cat_title 函数。通过对比 wordpress 2.9 和 3.0 的 \wp-includes\general-template.php 文件,发现该函数已有变化。

具体可参考IT樵客的这篇《wordpress升级到3.0首页调用single_cat_title()不显示的问题

为什么某些“CMS主题”不会出现这个问题?

目前存在的“CMS主题”,国内的作者比较习惯那种常规的栏目式(类似上面的截图),但对于其中的显示“分类名称”,大多是采用了两种不同的方法:

1)某些主题,使用前需要手动编辑填写分类名称,不调用 single_cat_title 函数。这种当然不会遇到本文提及的现象,分类名称是通过录入的文本而显示的。
使用这种方式的主题有:wp-cmsTechtrack、……

2)某些主题,通过分类的ID自动调用分类名称,需要使用 single_cat_title 函数。这类主题的用户,当wordpress升级到3.0.x,由于 single_cat_title 函数无法正常调用,就出现栏目位置不显示分类名称的现象。
使用这种方式的主题有:iNews-v2/v1BBtheme CMSWPYOU CMS、……

呵呵,在此顺便讲几句:当您使用某款主题遇到问题时,通常没必要抱怨,更不必责备作者如何如何,什么事情都是有原因的,方式不同、情况不同、……

有没有什么函数可替代 single_cat_title ?

根据以往印象,如果wordpress升级改变了某些函数在主题中不适合继续使用,那么会放出新的函数取而代之,但目前还没发现。

虽然single_cat_title有两项参数可设置,但并不能解决这个调用问题。

另外,在WordPress讨论区其实也有很多关于这个问题的帖子,
例如:Problem with single_cat_title after 3.0 upgrade, NOT resolved.
其中提到些方法,不过比较无奈,我尝试过但并不能解决iNews-v2等主题的问题。

如果解决“无法调用分类名称”的问题?

方法一:无法调用,那就干脆不要调用

正如网友印客诚品所讲的“我升级了3.01还是没的办法调用分类栏目标题,只有自己在代码里面填写标题冒充”,通过自己编辑修改原主题的代码,把自动调用相关的代码替换成文本。这个方法对于 iNews-v2/v1、BBtheme CMS、WPYOU CMS 等等主题都适用,但修改的难易程度不同,需要有相应的动手能力。

优:一了百了,不用修改系统文件。
弊:有可能要拆分原有代码(化简为繁),有可能需要动手能力较强。
前提条件:如果网站规划的分类已经完善,以后不需要再修改。

方法二:修改 single_cat_title 函数

先找到并开启准备编辑 ...\wp-includes\general-template.php 文件;
搜索 function single_cat_title 找到函数位置(3.0.1的在第687行);
用 wordpress 2.9 (或以前版本) 的这段函数代码,替换现在的那段……

function single_cat_title($prefix = '', $display = true ) {
$cat = intval( get_query_var('cat') );
if ( !empty($cat) && !(strtoupper($cat) == 'ALL') ) {
$my_cat_name = apply_filters('single_cat_title', get_the_category_by_ID($cat));
if ( !empty($my_cat_name) ) {
if ( $display )
echo $prefix.strip_tags($my_cat_name);
else
return strip_tags($my_cat_name);
}
} else if ( is_tag() ) {
return single_tag_title($prefix, $display);
}
}

优:很简便,易操作。
弊:以后升级时有可能仍需修改(或许以后有可能会有新的函数)
温馨提示:修改前记得先备份一下原文件。

个人比较推荐方法二,临时的简单解决一下,易操作,不用大动干戈。

暂写这些了,如果哪位朋友知道更好的解决方法,请分享一下,谢谢!


文章标题:某些主题在 WP 3.0 无法调用分类名称的原因及解决方法
链接地址:http://dickeydong.cn/wordpress-3-single-cat-title.html

本页共有65 条留言


  1. 三维网 .

    我本来准备用3.01,装完就发现这问题,可惜你没出差回来,我就降级了,降完级发现,分类乱套了。。排的乱七八糟,听说有插件能搞,等有时间再说吧

    [Reply]

    Dickey Reply:

    呵呵,我比较懒得升级(这空间不支持自动升级),目前还是 Version 2.8.4

    [Reply]

  2. 三维网 .

    晕,我又升级到3.01,用博主第二种方法仍然不行。。

    [Reply]

    Dickey Reply:

    可能你需要留意:被替换掉的那段代码,起/始位置是否正确

    [Reply]

    Dickey Reply:

    我已把主题演示站升级到3.0.1,然后使用"方法二",正常。
    可浏览:http://yuming.hangyexinwen.com

    [Reply]

    gxfdy Reply:

    使用方法二后未完全解决这个问题 求解 谢谢

    [Reply]

    Dickey Reply:

    浏览了你的网站,发现有几个分类没显示名称,其它的就是正常。
    这确实很费解,建议检查对比一下那几个分类与其它的有何区别。

  3. Kada .

    好久没有来了,一来就赶上更新了。

    [Reply]

  4. dvfei .

    我也是用的博主的主题iNews-v2,同样的问题困扰我好久,现在已经解决了

    [Reply]

  5. 网络水军 .

    路过 支持下!

    [Reply]

  6. 最好的戒烟产品 .

    不错哦 看了好久终于出新作品了。

    [Reply]

  7. 新手 .

    你好,非常喜欢你的这套模板,因为是新手,不会修改模板源码,所以把WP3.0降为2.9了。然后就出现了那个
    所有分类名称都一样的问题。虽然我看见你前一篇博文写的注意改动事项了,但是我还是没有改好。能否麻烦详细的告知一下修改每个分类名称的步骤呢?

    [Reply]

  8. 新手 .

    已经解决啦~~~谢谢哦

    [Reply]

    Dickey Reply:

    不必客气,解决了就好。(评论时可以留链接,以便回访。)

    [Reply]

  9. 印客 .

    博主,我们用你的模板,给你留言的怎么不回啊!

    [Reply]

    Dickey Reply:

    你好!由于看到很多留言都是说无法调用分类名称,所以写了这篇日志详细介绍这个问题。

    [Reply]

  10. 环保灶 .

    学习了!!!

    [Reply]

  11. 最好的戒烟产品 .

    来学习下

    [Reply]

  12. 网上创业 .

    用了博主的方法很成功 谢谢

    [Reply]

  13. 就下载 .

    Today I lost teeth, very comfortable!

    [Reply]

  14. 盘锦保险 .

    悄悄的告诉lz,这篇文章我转走了。

    [Reply]

  15. 野钓 .

    无条件支持lz的一切言论!膜拜……

    [Reply]

  16. Kada .

    我找到几个很漂亮的主题,但是显示中文有问题。

    [Reply]

  17. 通智广告 .

    WP是俺的最爱。这个做的不错,学习一下。

    [Reply]

  18. 印客 .

    谢谢博主!

    [Reply]

  19. 印客 .

    希望博主的iNews-v3出台!
    我印客永远支持你!

    [Reply]

  20. 麦包包 .

    过来逛逛,给博主增加点人气

    [Reply]

  21. 80后 .

    用第二种办法终于解决了。差一点把主题换了。

    [Reply]

  22. 910679796 .

    顶起

    [Reply]

  23. 眼霜 .

    学习了啊!

    [Reply]

  24. 蓝牙姐姐 .

    路过帮顶一下吧!

    [Reply]

  25. again .

    升级wordpress 3.0后,解决标题显示问题,可修改index.php中

    改为

    [Reply]

  26. 印客 .

    http://www.tdprint.cn
    按照博主的第二种方法修改,已经成功了。

    [Reply]

  27. 创享·生活 .

    你好,经过对比其他cms,解决方法可以将index.php中的$wp_query->is_category = false;改为$wp_query->is_category = true;

    [Reply]

  28. 梨花头 .

    博主加油!~~~~~~~~~

    [Reply]

  29. 车程网 .

    [Reply]

  30. 苹果apple .

    期待博主的iNews-v3出台!
    足以取代一般的cms了

    [Reply]

  31. 女人手机 .

    原来是这样哦,谢谢啦

    [Reply]

  32. 以纯官方网站 .

    很喜欢楼主写的东西,我又来看了。

    [Reply]

  33. 落木 .

    xuexi le .

    [Reply]

  34. 网上兼职赚钱 .

    学习了,很喜欢来这里看看!

    [Reply]

  35. 眼霜排行榜 .

    学习了,很喜欢来这里看看!

    [Reply]

  36. 自行式高空作业平台 .

    我赞成。

    [Reply]

  37. 新世纪电影城 .

    来到了贵博客,学习下建立博客的经验,博主有空指教俺一下吧。

    [Reply]

  38. 杀毒软件哪个好 .

    WP的博客
    对我来说
    太复杂了

    [Reply]

  39. 三只眼 .

    你好站长,我现在用着你的主题呢,出现了几个问题,请看我站,现在是首页显示的那些分类就是你代码中(1,1)的,我现在只显示的是1但是当我改成(1,2)的时候1有2就是空白的,3,456也一样,我搞不太清楚怎么回事,请教您帮帮我解决这一问题,我新手

    [Reply]

  40. 变压器 .

    晕啊 还是没看懂

    [Reply]

  41. 娱人码头 .

    来这里耍耍,学习下博客的操作技巧,博主不要介意。

    [Reply]

  42. 晨速物流 .

    顶!支持!

    [Reply]

  43. 三秦 .

    来踩踩!

    [Reply]

  44. 智多宝 .

    是不是沙发?

    [Reply]

  45. 风生水起 .

    在把虫子搞好之前,我决定还是不要用3.0.

    [Reply]

  46. cnpapers.cn .

    博主你好,今天逐一测试的时候才发现,原来这个主题所有的独立页面都无法打开啊 估计是这个功能有什么问题吧 麻烦帮忙看看啊 万分感谢 我的网址是www.cnpapers.cn

    [Reply]

  47. 侦探 .

    来访丢个脚印

    [Reply]

  48. 电影天堂 .

    我按照楼主说的做,但还是没有办法显示,很奇怪,我只能换为2.9版本的,但发布文章的时候又会出错,不知道是哪里出问题了,我是按照楼主说的第二种方式来操作,替换了代码,但还是不显示,请教是什么问题呢?

    [Reply]

  49. 靴裤搭配 .

    这几天我也在学模板制作,又学到一招了

    [Reply]

  50. 电脑维修知识 .

    我刚才还担心我的3.02会不会出问题呢

    [Reply]

  51. RUNNER .

    使用了37楼的方法,解决问题,可正常浏览http://runner0324.com;

    修改$wp_query->is_category = false成$wp_query->is_category = true即可,共四处.

    [Reply]

  52. 摘虚茧 .

    37楼的方法,博主的方法都试过了,无用,3.0.1版本的,都想换主题了。

    [Reply]

  53. 京沪高铁 .

    $wp_query->is_category = true即可

    [Reply]

    京沪高铁 Reply:

    3.05版本。

    [Reply]

  54. 导航仪品牌排名 .

    我刚才还担心我的3.02会不会出问题呢

    [Reply]

  55. wo不再胡来L .

    哎,我搞了好久还是没搞懂,分类中的3、6、7就是调用不出来

    [Reply]

  56. wo不再胡来L .

    搞好了,就是突然发现了真实的原因,就是ID分类3、6、7是空白,我将3、6、7分别改成13、14、15就都显示出来了,可是我明明只有12个分类目录,⊙﹏⊙b汗一个

    [Reply]

  57. 股市茶楼 .

    此款主题的忠实爱好者!用了两三年了!
    不管什么问题基本都解决了。。。现在发现该主题存在一个问题。。。不知何解...

    换到新的VPS上测试结果是:自带主题各个页面打开都很快,但是用这款主题非常慢。。。只有在150MB+的数据库,没什么流量访问的情况下出现的

    不知道是不是里面有一些代码过旧还是怎么的?

    还想继续用下来。。。不知道老板有时间是否可以优化一下。。。

    [Reply]

期待您留下宝贵的意见或见解: