|
WP博客修改文章栏目自定义排序的正确方法
信息来源:作者:拼一把博客发布时间:2012-12-17浏览:我要评论
wordpress中的文章栏目可以在 外观-菜单 下面用鼠标上下拖动来排序导航菜单中的文章分类栏目顺序,但这主要是针对可以支持菜单自定义的模板来说。如果你的模板恰恰不支持菜单定义,只支持默认排序(也就是按照name来排序),那这样就比较悲剧了,而且据笔者研究,有很多模板都不知道这样的,比如iNove模板,今天我就拿它来做介绍。
预备:
需要在wp_tems 表中增加一个排序字段,名字定位”order_”,类型为:int。这个可以随便定义,懂程序的朋友都知道,只要你后面拼查询语句的时候对应上就可以了,如果您不懂程序,那就按照的我步骤来吧。
1、首先,wordpress中的文章栏目排序是按照‘栏目的name’排序的,而且关联参数字段optioncount 大于零的才查找,非常不灵活,因此可以增加一个排序字段,修改查询条件代码,让它按照排序字段查找就ok了。
具体代码如下:位置在模板目录下的 sitebar.php 文件中。
默认值: name&optioncount=0&depth=1&***ime;);?>
修改后:order&optioncount=0&depth=1&***ime;);?>
2、修改 wordpress 目录的查询语句,文件在wordpress\wp-includes\taxonomy.php
默认代码:
if ( ‘count’ == $orderby )
$orderby = ‘tt.count’;
else if (‘order’ ==$orderby)
$orderby = ‘t.order_’;
else if ( ‘name’ == $orderby )
$orderby = ‘t.name’;
else if ( ‘slug’ == $orderby )
$orderby = ‘t.slug’;
else if ( ‘term_group’ == $orderby )
$orderby = ‘t.term_group’;
else if ( ‘term_order’ == $orderby )
$orderby = ‘tr.term_order’;
else if ( ‘none’ == $orderby ) {
$orderby = ”;
$order = ”;
} else {
$orderby = ‘t.term_id’;
}
修改后代码:
增加一个else if 语句:
else if (‘order’ ==$orderby)
$orderby = ‘t.order_’;
3、执行完上面两步后,一般的模板可能就会起作用,网上很多例子也是以上两步,经笔者测试仍然不起作用,后来经过分析之后,认为肯定是模板的头部加载栏目的时候,排序也需要修改。于是,按照这个思路,一步步找下去:
在iNove 模板的根目录下找到hearder.php 没有看见有查询的代码,只是有一些样式加载,但是大家一定要细心找,它是包含了另一个业务文件,
所以真正的问题文件在templates/header.php 下面,打开找到这行代码:
if($options['menu_type'] == ‘categories’) {
wp_list_categories(‘title_li=0&orderby=name&show_count=0&***ime;);
} else {
wp_list_pages(‘title_li=0&sort_column=menu_order’);
}
将wp_list_categories(‘title_li=0&orderby=name&show_count=0&***ime;);
修改为:
wp_list_categories(‘title_li=0&orderby=order&show_count=0&***ime;);
然后刷新页面试试,如愿以偿。博客链接:http://www.pin18.net,进一步交流 |
|