首页 > CMS > Wordpress > 正文

WordPress学习第四天——分类排序的解决方案,category order

2024-09-07 00:51:21
字体:
来源:转载
供稿:网友

最近在用上一篇介绍的那个Broadcast主题,非常好用,但是他的主菜单是基于文章分类的,而不是wordpress标准的菜单方式,所以排序就成了问题,网上有人说WordPress分类排序的原理是默认按照尾字母的英文字母去的,中文汉字是依照第一个汉字的笔划次序来的,分歧范例的排序则顺次是中文汉字--数字--26个英文字母。但我添加后的默认显示顺序是:联系我们、日本旅游、文化交流、合作伙伴、协会介绍。我也没看出来怎么是按中文笔画排序的。

关于分类排序很多人都提到各种各样的排序插件,比如my categories order之类的,但我搜了一下大多年久失修,很久没更新了,应该已经不能适应新版wp了。

第二种方法是修改wp-includes文件夹下:category-template.php页面中wp_list_categories函数里的这一句:'orderby' => 'id', 'order' => 'ASC',把name改成id,这样就可以按照id值排序了,起码找到了一个靠谱的规则。关于如何知道分类的id,很简单,分类编辑列表,把鼠标放在分类名称上,浏览器下方就会显示“.../?cat=2”这样的信息,结尾数字就是对应分类的id了,系统默认分配id的规则是自增的。对于Broadcast,菜单位置显示分类时id最值小的排在菜单最右段,我们习惯都是按左边排第一个,这样先添加的倒跑最后去了。不过没关系,我们可以先添加后面的,再添加前面的,顺序反过来就好。其实还有一个办法就是添加的时候名称只写1、2、3这样,然后再按需要的顺序改成想要的。

上述方法有一个明显缺点,就是以后要调整时会很麻烦,比如要调整个顺序,或者想在中间增加一个分类时就不好处理了。没关系,我们还有一个办法“修改数据库值”。

注:该方法仅在我本地简单测试,原理应该无误,但若发生问题本人概不负责……

wp的数据库里wp_terms表存储了文章分类和菜单,term_id就是他们的id值,我一开始就直接把这个值修改了想看顺序,结果一刷新前台发现分类没有了,后台看了一下也没有了,后来发现还有wp_term_taxonomy这个表,这个表里的term_id就是wp_terms的term_id,是外键,wp_terms和wp_term_taxonomy表term_id要同时修改就好。我一开始还担心文章是不是也引用了这个id,那样添加了很多文章后就麻烦了,后来发现wp的dba可能考虑过这个问题,它是用wp_term_relationships表来存储文章和菜单或分类对应关系的,而且用的是wp_term_taxonomy表的term_taxonomy_id,而这个值我们是不用修改的,所以就没问题啦。从此以后就可以随心所欲修改分类显示顺序啦,哈哈哈哈哈。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表