WP博客修改文章欄目自定義排序的正確方法

wordpress中的文章欄目可以在 外觀-菜單 下面用鼠標上下拖動來排序導航菜單中的文章分類欄目順序,但這主要是針對可以支持菜單自定義的模板來說。如果你的模板恰恰不支持菜單定義,隻支持默認排序(也就是按照name來排序),那這樣就比較悲劇瞭,而且據筆者研究,有很多模板都不知道這樣的,比如iNove模板,今天我就拿它來做介紹。
預備:
需要在wp_tems 表中增加一個排序字段,名字定位order_,類型為:int。這個可以隨便定義,懂程序的朋友都知道,隻要你後面拼查詢語句的時候對應上就可以瞭,如果您不懂程序,那就按照的我步驟來吧。

1、首先,wordpress中的文章欄目排序是按照欄目的name排序的,而且關聯參數字段optioncount 大於零的才查找,非常不靈活,因此可以增加一個排序字段,修改查詢條件代碼,讓它按照排序字段查找就ok瞭。
具體代碼如下:位置在模板目錄下的 sitebar.php 文件中。
默認值: nameoptioncount=0depth=1***ime;);?>
修改後:orderoptioncount=0depth=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=0orderby=nameshow_count=0***ime;);
} else {
wp_list_pages(title_li=0sort_column=menu_order);
}
將wp_list_categories(title_li=0orderby=nameshow_count=0***ime;);
修改為:
wp_list_categories(title_li=0orderby=ordershow_count=0***ime;);

然後刷新頁面試試,如願以償。博客鏈接:,進一步交流