2014年8月19日
令wordpress分类目录和子目录在自定义导航栏中按指定顺序显示(一)
最近将小站的导航栏更换为自定义的导航栏,对导航栏的显示效果进行了小小的装饰,但是这样导航栏分类目录与子目录的顺序都无法调整了。以前用模板的导航栏时,虽然子目录显示顺序也是不能调整的,但分类目录是可以调整的。
经过一番搜索,想让自定义导航栏中的分类目录与子目录按指定顺序显示大致分为以下几种方式:
1.插件:说法不一,有的人说很调整很方便,也有人说插件只能调整侧边栏的顺序,无法改变导航栏的顺序。当然他们说的可能是不同的插件,但是小站的速度已经很慢了,再为这点小事装个插件,不是雪上加霜吗?所以这种方式暂不考虑。
2.加空格法:据说在分类名称前按空格键加上空白,空白越多排的越前面,然后通过修改模板文件来将显示时的空格隐藏,我将这种方案简称为加空格法,这种方法有点怪怪的,有末有?。http://jingyan.baidu.com/article/91f5db1be8cceb1c7f05e3c1.html
3.修改数据库文件:wp_list_cat的orderby默认值是name,可以将其值修改为ID,这样导航栏中的分类目录的显示顺序就会按照ID大小来排列。如果创建时ID正好是我们想要的顺序,那到这里就OK了;但如果不巧创建时的ID顺序不是我们想要的顺序,那么可以选择重新创建或者去修改数据库中的相应文件,将分类目录与子目录的ID修改为我们想要的顺序。个人觉得,重新创建太麻烦,修改数据库相应文件要稍微靠谱些。
那么修改ID之后,分类子目录在相应目录中的排序方式是否与分类目录相同呢?这个问题没有明确的答案,那就让我来做个实验吧。
我先分析了当前小站当前分类目录与子目录的ID,然后将相关代码中orderby的值修改为ID。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<li<?php if (is_home()) { echo ' class="cat-item"';} ?>><a title="HOME" href="/">首页</a> </li> <?php $currentcategory = ''; if (!is_page() && !is_home()) { $catsy = get_the_category(); $myCat = $catsy[0]->cat_ID; $currentcategory = '¤t_category='.$myCat; } wp_list_categories('orderby=ID&depth=0&title_li=&show_count=0&hide_empty=0&child_of=0'.$currentcategory); wp_list_pages('depth=1&title_li=&sort_column=menu_order'); ?> |
刷新后显示效果验证:相应分类的子目录也是按ID从小到大的顺序自上而下排列的。
在做这些动作前,我心中对导航栏的顺序有一个大体的框架,都某几项也比较模棱两可。很凑巧的是小站导航栏按ID排放时,显示顺序正好基本满足我的需求。因此,小站的导航栏将暂定为当前显示顺序,但关于修改数据库部分我会在本地主机上进行验证,欲知详情,请听下回分解。