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

这亦是大家比较熟悉常见的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-cms、Techtrack、……
2)某些主题,通过分类的ID自动调用分类名称,需要使用 single_cat_title 函数。这类主题的用户,当wordpress升级到3.0.x,由于 single_cat_title 函数无法正常调用,就出现栏目位置不显示分类名称的现象。
使用这种方式的主题有:iNews-v2/v1、BBtheme CMS、WPYOU 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

我本来准备用3.01,装完就发现这问题,可惜你没出差回来,我就降级了,降完级发现,分类乱套了。。排的乱七八糟,听说有插件能搞,等有时间再说吧
[Reply]
Dickey Reply:
八月 24th, 2010 at 20:58
呵呵,我比较懒得升级(这空间不支持自动升级),目前还是 Version 2.8.4
[Reply]
晕,我又升级到3.01,用博主第二种方法仍然不行。。
[Reply]
Dickey Reply:
八月 24th, 2010 at 20:52
可能你需要留意:被替换掉的那段代码,起/始位置是否正确
[Reply]
Dickey Reply:
八月 24th, 2010 at 21:39
我已把主题演示站升级到3.0.1,然后使用"方法二",正常。
可浏览:http://yuming.hangyexinwen.com
[Reply]
gxfdy Reply:
九月 1st, 2010 at 10:07
使用方法二后未完全解决这个问题 求解 谢谢
[Reply]
Dickey Reply:
九月 3rd, 2010 at 0:41
浏览了你的网站,发现有几个分类没显示名称,其它的就是正常。
这确实很费解,建议检查对比一下那几个分类与其它的有何区别。
好久没有来了,一来就赶上更新了。
[Reply]
我也是用的博主的主题iNews-v2,同样的问题困扰我好久,现在已经解决了
[Reply]
路过 支持下!
[Reply]
不错哦 看了好久终于出新作品了。
[Reply]
你好,非常喜欢你的这套模板,因为是新手,不会修改模板源码,所以把WP3.0降为2.9了。然后就出现了那个
所有分类名称都一样的问题。虽然我看见你前一篇博文写的注意改动事项了,但是我还是没有改好。能否麻烦详细的告知一下修改每个分类名称的步骤呢?
[Reply]
已经解决啦~~~谢谢哦
[Reply]
Dickey Reply:
九月 3rd, 2010 at 0:42
不必客气,解决了就好。(评论时可以留链接,以便回访。)
[Reply]
博主,我们用你的模板,给你留言的怎么不回啊!
[Reply]
Dickey Reply:
九月 7th, 2010 at 23:35
你好!由于看到很多留言都是说无法调用分类名称,所以写了这篇日志详细介绍这个问题。
[Reply]
学习了!!!
[Reply]
来学习下
[Reply]
用了博主的方法很成功 谢谢
[Reply]
Today I lost teeth, very comfortable!
[Reply]
悄悄的告诉lz,这篇文章我转走了。
[Reply]
无条件支持lz的一切言论!膜拜……
[Reply]
我找到几个很漂亮的主题,但是显示中文有问题。
[Reply]
WP是俺的最爱。这个做的不错,学习一下。
[Reply]
谢谢博主!
[Reply]
希望博主的iNews-v3出台!
我印客永远支持你!
[Reply]
过来逛逛,给博主增加点人气
[Reply]
用第二种办法终于解决了。差一点把主题换了。
[Reply]
顶起
[Reply]
学习了啊!
[Reply]
路过帮顶一下吧!
[Reply]
升级wordpress 3.0后,解决标题显示问题,可修改index.php中
改为
[Reply]
http://www.tdprint.cn
按照博主的第二种方法修改,已经成功了。
[Reply]
你好,经过对比其他cms,解决方法可以将index.php中的$wp_query->is_category = false;改为$wp_query->is_category = true;
[Reply]
博主加油!~~~~~~~~~
[Reply]
顶
[Reply]
期待博主的iNews-v3出台!
足以取代一般的cms了
[Reply]
原来是这样哦,谢谢啦
[Reply]
很喜欢楼主写的东西,我又来看了。
[Reply]
xuexi le .
[Reply]
学习了,很喜欢来这里看看!
[Reply]
学习了,很喜欢来这里看看!
[Reply]
我赞成。
[Reply]
来到了贵博客,学习下建立博客的经验,博主有空指教俺一下吧。
[Reply]
WP的博客
对我来说
太复杂了
[Reply]
你好站长,我现在用着你的主题呢,出现了几个问题,请看我站,现在是首页显示的那些分类就是你代码中(1,1)的,我现在只显示的是1但是当我改成(1,2)的时候1有2就是空白的,3,456也一样,我搞不太清楚怎么回事,请教您帮帮我解决这一问题,我新手
[Reply]
晕啊 还是没看懂
[Reply]
来这里耍耍,学习下博客的操作技巧,博主不要介意。
[Reply]
顶!支持!
[Reply]
来踩踩!
[Reply]
是不是沙发?
[Reply]
在把虫子搞好之前,我决定还是不要用3.0.
[Reply]
博主你好,今天逐一测试的时候才发现,原来这个主题所有的独立页面都无法打开啊 估计是这个功能有什么问题吧 麻烦帮忙看看啊 万分感谢 我的网址是www.cnpapers.cn
[Reply]
来访丢个脚印
[Reply]
我按照楼主说的做,但还是没有办法显示,很奇怪,我只能换为2.9版本的,但发布文章的时候又会出错,不知道是哪里出问题了,我是按照楼主说的第二种方式来操作,替换了代码,但还是不显示,请教是什么问题呢?
[Reply]
这几天我也在学模板制作,又学到一招了
[Reply]
我刚才还担心我的3.02会不会出问题呢
[Reply]
使用了37楼的方法,解决问题,可正常浏览http://runner0324.com;
修改$wp_query->is_category = false成$wp_query->is_category = true即可,共四处.
[Reply]
37楼的方法,博主的方法都试过了,无用,3.0.1版本的,都想换主题了。
[Reply]
$wp_query->is_category = true即可
[Reply]
京沪高铁 Reply:
五月 27th, 2011 at 15:42
3.05版本。
[Reply]
我刚才还担心我的3.02会不会出问题呢
[Reply]
哎,我搞了好久还是没搞懂,分类中的3、6、7就是调用不出来
[Reply]
搞好了,就是突然发现了真实的原因,就是ID分类3、6、7是空白,我将3、6、7分别改成13、14、15就都显示出来了,可是我明明只有12个分类目录,⊙﹏⊙b汗一个
[Reply]
此款主题的忠实爱好者!用了两三年了!
不管什么问题基本都解决了。。。现在发现该主题存在一个问题。。。不知何解...
换到新的VPS上测试结果是:自带主题各个页面打开都很快,但是用这款主题非常慢。。。只有在150MB+的数据库,没什么流量访问的情况下出现的
不知道是不是里面有一些代码过旧还是怎么的?
还想继续用下来。。。不知道老板有时间是否可以优化一下。。。
[Reply]