45IT.COM- 電腦學習從此開始!
DIY硬件教程攢機經驗裝機配置
設計Photoshop網頁設計特效
系統注冊表DOS系統命令其它
存儲主板顯卡外設鍵鼠內存
維修顯卡CPU內存打印機
WinXPVistaWin7unix/linux
CPU光驅電源/散熱顯示器其它
修技主板硬盤鍵鼠顯示器光驅
辦公ExcelWordPowerPointWPS
編程數據庫CSS腳本PHP
網絡局域網QQ服務器
軟件網絡系統圖像安全
頁面導航: 首頁 > 設計學院 > 網頁設計 >

WordPress 自定義文章列表列的實例

電腦軟硬件應用網 45IT.COM 時間:2015-01-12 17:08 作者:佚名
下面來看一篇關于WordPress 自定義文章列表列的實例,這個功能在wp系統默認是沒有的我們是看一站長開發了,下面整理和各位分享。 今天要實現的效果如下圖,具體的功能就是在列表里添加一列推薦指數,用來顯示每篇文
下面來看一篇關于WordPress 自定義文章列表列的實例,這個功能在wp系統默認是沒有的我們是看一站長開發了,下面整理和各位分享。

今天要實現的效果如下圖,具體的功能就是在列表里添加一列“推薦指數”,用來顯示每篇文章的推薦指數,同時可以根據“推薦指數”來進行文章排序。

首先要做的就是在表頭添加“推薦指數”列。

代碼如下  

function add_rating_column($columns) {
$columns['rating'] = '推薦指數';
return $columns;
}
add_filter('manage_posts_columns' , 'add_rating_column');


manage_posts_columns Filter可以應用管理文章頁面的表頭里,用來修改表頭信息。注意該Filter不會應用到Page的列表頁面,如需用到,請使用manage_pages_columns 或者 manage_${post_type}_posts_columns

有了表頭,只是添加了這一列,但是該列還沒有內容,我們來為該列填充數據。

代碼如下  

function rating_column_content($column_name, $post_id) {
if ($column_name == 'rating') {
$rating_value = get_post_meta( $post_id, '_rating', true );
echo ($rating_value / 2) . '星';
}
}
add_action('manage_posts_custom_column', 'rating_column_content', 10, 2);


這里用到了 manage_posts_custom_column Action,查看該Action的文檔,我們可以知道該Action可以用來添加或修改列表的列,包括內建的以及自定義的列表列。該Action 接受兩個參數,第一個是列表列的名字($column_name,即第一步中的’rating’,而非’推薦指數’),第二個是當前的文章ID($post_id)。根據這兩個參數,我們就可以根據當前列的名字來獲取文章的相關信息了。

這里通過判斷當前列表列是不是’rating’,是則根據文章ID獲取到推薦指數的值,并格式化輸出。

接下來讓他能夠進行排序。通過 manage_edit-post_sortable_columns Filter來指定哪些列可以用來排序。

代碼如下  

function rating_column_table_sorting( $columns ) {
$columns['rating'] = 'rating';
return $columns;
}
add_filter( 'manage_edit-post_sortable_columns', 'rating_column_table_sorting' );


添加后,點擊“推薦指數”列表頭,可以看到頁面的地址已經變到了排序的頁面(/wp-admin/edit.php?orderby=rating&order=asc),但是列表卻并沒有排序。這是因為WordPress并不如何根據’rating’來排序。

接下來就告訴WordPress如何根據’rating’排序。

代碼如下  


function rating_column_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && $vars['orderby'] == 'rating' ) {
$vars['orderby'] = 'meta_value_num';
$vars['meta_key'] = '_rating';
}
return $vars;
}
add_filter( 'request', 'rating_column_orderby' );


這里我們通過改變request Filter,判斷當前是否有’orderby’參數,以及是否等于’rating’,如果是,則將orderby=meta_value_num和meta_key=_rating加入到了當前請求的query vars中,這樣WordPress就知道需要根據自定義字段’_rating’的整數順序來排序。

至此,自定義文章列表列的功能已經實現。這里只是一個示例,稍作修改,便可以將“推薦指數”換成你文章中的任何數據,從而實現不同站點的不同需求。

另外,你是不是又注意到自己根據教程實現的效果有點不一樣?你的“推薦指數”在最后一列?

告訴你一個小技巧,在第一段代碼中,傳給Filter的參數$columns,是一個列的數組,包含了所有的列的信息,在沒有自定義列的情況下,返回的就是內建的列,其順序如下:cb(復選框)、title(標題)、author(作者)、categories(分類目錄)、tags(標簽)、comments(評論)、date(日期)。如果要將自定義的列加到特定位置,就需要循環該數組,到特定位置時,再添加自定義的列,代碼如下。如果需要刪除某些列,在循環中刪除該key=>value即可(代碼中注釋的部分,刪除了評論列)。

 

代碼如下  
function add_rating_column($columns) {
$new = array();
foreach($columns as $key => $title) {
if ($key == 'comments') {
$new['rating'] = '推薦指數';
}
// if ($key == 'comments') {
// continue;
// }
$new[$key] = $title;
}
return $new;
}
頂一下
(1)
50%
踩一下
(1)
50%
------分隔線----------------------------
發表評論
請自覺遵守互聯網相關的政策法規,嚴禁發布色情、暴力、反動的言論。
評價:
表情:
驗證碼:點擊我更換圖片
推薦知識
法甲球队有哪些