WordPress 自定義文章列表列的實(shí)現(xiàn)方法

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

首先要做的就是在表頭添加“推薦指數(shù)”列。
- function add_rating_column($columns) {
- $columns['rating'] = '推薦指數(shù)';
- return $columns;
- }
- add_filter('manage_posts_columns' , 'add_rating_column');
manage_posts_columns Filter可以應(yīng)用管理文章頁面的表頭里,用來修改表頭信息。注意該Filter不會(huì)應(yīng)用到Page的列表頁面,如需用到,請(qǐng)使用manage_pages_columns 或者 manage_${post_type}_posts_columns
有了表頭,只是添加了這一列,但是該列還沒有內(nèi)容,我們來為該列填充數(shù)據(jù)。
- 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可以用來添加或修改列表的列,包括內(nèi)建的以及自定義的列表列。該Action 接受兩個(gè)參數(shù),第一個(gè)是列表列的名字($column_name,即第一步中的’rating’,而非’推薦指數(shù)’),第二個(gè)是當(dāng)前的文章ID($post_id)。根據(jù)這兩個(gè)參數(shù),我們就可以根據(jù)當(dāng)前列的名字來獲取文章的相關(guān)信息了。
這里通過判斷當(dāng)前列表列是不是’rating’,是則根據(jù)文章ID獲取到推薦指數(shù)的值,并格式化輸出。
接下來讓他能夠進(jìn)行排序。通過 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' );
接下來就告訴WordPress如何根據(jù)’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' );
至此,自定義文章列表列的功能已經(jīng)實(shí)現(xiàn)。這里只是一個(gè)示例,稍作修改,便可以將“推薦指數(shù)”換成你文章中的任何數(shù)據(jù),從而實(shí)現(xiàn)不同站點(diǎn)的不同需求。
另外,你是不是又注意到自己根據(jù)教程實(shí)現(xiàn)的效果有點(diǎn)不一樣?你的“推薦指數(shù)”在最后一列?
告訴你一個(gè)小技巧,在第一段代碼中,傳給Filter的參數(shù)$columns,是一個(gè)列的數(shù)組,包含了所有的列的信息,在沒有自定義列的情況下,返回的就是內(nèi)建的列,其順序如下:cb(復(fù)選框)、title(標(biāo)題)、author(作者)、categories(分類目錄)、tags(標(biāo)簽)、comments(評(píng)論)、date(日期)。如果要將自定義的列加到特定位置,就需要循環(huán)該數(shù)組,到特定位置時(shí),再添加自定義的列,代碼如下。如果需要?jiǎng)h除某些列,在循環(huán)中刪除該key=>value即可(代碼中注釋的部分,刪除了評(píng)論列)。
- function add_rating_column($columns) {
- $new = array();
- foreach($columns as $key => $title) {
- if ($key == 'comments') {
- $new['rating'] = '推薦指數(shù)';
- }
- // if ($key == 'comments') {
- // continue;
- // }
- $new[$key] = $title;
- }
- return $new;
- }
相關(guān)文章
CyberPanel安裝WordPress并配置偽靜態(tài)規(guī)則
下面教你如何在 CyberPanel安裝WordPress以及配置偽靜態(tài),需要的朋友可以參考下2023-12-27- 這篇文章主要介紹了wordpress無法安裝更新主題插件的解決辦法,需要的朋友可以參考下2020-12-27
WordPress必備數(shù)據(jù)庫SQL查詢語句整理
發(fā)現(xiàn)幾條比較實(shí)用的,適合 WordPress 實(shí)用的SQL語句。于是就趕緊收集分享出來了,需要的朋友可以參考下2017-09-23wordpress在安裝使用中出現(xiàn)404、403、500及502問題的分析與解決方法
wordpress是很多新手站長(zhǎng)搭建個(gè)人博客最喜愛的程序,但是最近在使用WordPress的時(shí)候遇到了一些問題,所以想著將遇到問題總結(jié)分享出來,下面這篇文章主要給大家介紹了關(guān)于wo2017-08-11WordPress取消英文標(biāo)點(diǎn)符號(hào)自動(dòng)替換中文標(biāo)點(diǎn)符號(hào)的優(yōu)雅方法
這篇文章主要介紹了WordPress取消英文標(biāo)點(diǎn)符號(hào)自動(dòng)替換中文標(biāo)點(diǎn)符號(hào)的優(yōu)雅方法,需要的朋友可以參考下2017-04-04- 這篇文章主要給大家介紹了wordpress自定義上傳文件類型的方法,如WordPress默認(rèn)允許上傳 .exe 后綴名的可運(yùn)行文件,那么我們?cè)趺唇褂脩粼赪ordPress后臺(tái)發(fā)表文章時(shí)上傳 .e2016-12-19
- 大家可能發(fā)現(xiàn)了當(dāng)實(shí)現(xiàn)了前端用戶中心,后臺(tái)控制面板就失去了作用,那么限制其他用戶進(jìn)入后臺(tái)控制面板就很有必要了!那么我們要怎么做呢?通過下面這篇文章分享的方法后,只2016-12-19
WordPress實(shí)現(xiàn)回復(fù)文章評(píng)論后發(fā)送郵件通知的功能
這篇文章主要介紹了WordPress實(shí)現(xiàn)回復(fù)文章評(píng)論后發(fā)送郵件通知的功能,涉及wordpress針對(duì)評(píng)論與郵件的相關(guān)操作技巧,需要的朋友可以參考下2016-10-11WordPress使用自定義文章類型實(shí)現(xiàn)任意模板的方法
這篇文章主要介紹了WordPress使用自定義文章類型實(shí)現(xiàn)任意模板的方法,可通過自定義文章類型來實(shí)現(xiàn)任意模版的使用,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-10-11WordPress后臺(tái)地址被改導(dǎo)致無法登陸后臺(tái)的簡(jiǎn)單解決方法
這篇文章主要介紹了WordPress后臺(tái)地址被改導(dǎo)致無法登陸后臺(tái)的簡(jiǎn)單解決方法,簡(jiǎn)單分析了后臺(tái)無法登陸的原因與相應(yīng)的解決方法,涉及針對(duì)wordpress配置項(xiàng)的簡(jiǎn)單修改,需要的朋友2016-10-11