登录注册

one-long

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
查看: 507|回复: 0
打印 上一主题 下一主题

WP博客修改文章栏目自定义排序的正确方法

[复制链接]

1734

主题

1745

帖子

5400

积分

论坛元老

Rank: 8Rank: 8

积分
5400
跳转到指定楼层
楼主
发表于 2016-8-26 16:29:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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,进一步交流
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则