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

由于多方面原因,比较忙乱。很久没更新过博客,也没关注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);
}
}

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

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

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

本文现有 65 条评论:

  1. 三维网说道:

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

  2. 三维网说道:

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

  3. Kada说道:

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

  4. dvfei说道:

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

  5. 网络水军说道:

    路过 支持下!

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

  7. 新手说道:

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

  8. 新手说道:

    已经解决啦~~~谢谢哦

  9. 印客说道:

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

  10. 环保灶说道:

    学习了!!!

  11. 网上创业说道:

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

  12. 就下载说道:

    Today I lost teeth, very comfortable!

  13. 盘锦保险说道:

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

  14. 野钓说道:

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

  15. Kada说道:

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

  16. 通智广告说道:

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

  17. 印客说道:

    谢谢博主!

  18. 印客说道:

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

  19. 麦包包说道:

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

  20. 80后说道:

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

  21. 910679796说道:

    顶起

  22. 眼霜说道:

    学习了啊!

  23. 蓝牙姐姐说道:

    路过帮顶一下吧!

  24. again说道:

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

    改为

  25. 印客说道:

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

  26. 创享·生活说道:

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

  27. 梨花头说道:

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

  28. 苹果apple说道:

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

  29. 女人手机说道:

    原来是这样哦,谢谢啦

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

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

  32. 眼霜排行榜说道:

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

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

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

  35. 三只眼说道:

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

  36. 变压器说道:

    晕啊 还是没看懂

  37. 娱人码头说道:

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

  38. 晨速物流说道:

    顶!支持!

  39. 三秦说道:

    来踩踩!

  40. 智多宝说道:

    是不是沙发?

  41. 风生水起说道:

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

  42. cnpapers.cn说道:

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

  43. 侦探说道:

    来访丢个脚印

  44. 电影天堂说道:

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

  45. 靴裤搭配说道:

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

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

发表评论

1 x 4 =