这篇文章关键详细介绍了WordPress 自定文章列表列的完成方式,必须的盆友能够参照下

上一篇,大家应用 Meta Box 为文章加上了一个“推荐指数”字段名。加上后用了一段时间,好像不那麼便捷,编写文章尽管便捷了,可是在文章列表里却不可以形象化的显示信息出文章推荐指数,并且不可以依据推荐指数来排序文章,由于这种不够,今日就来健全一下,使他更便捷功能强大。

今日要完成的实际效果如下图,实际的作用便是在列表里加上一列“推荐指数”,用于显示信息每章文章的推荐指数,另外能够依据“推荐指数”来开展文章排序。

WordPress 自定义文章列表列的实现方法 ss val 列表 根据 cms  第1张

最先要做的便是在表头加上“推荐指数”列。
PHP Code拷贝內容到剪贴板

  1. function add_rating_column($columns) {   
  2.     $columns[‘rating’] = ‘推荐指数’;   
  3.     return $columns;   
  4. }   
  5. add_filter(‘manage_posts_columns’ , ‘add_rating_column’);   

manage_posts_columns Filter能够程序管理文章网页页面的表头内,用于改动表头信息内容。留意该Filter不容易运用到Page的列表网页页面,如要用到,请应用manage_pages_columns 或是 manage_${post_type}_posts_columns

拥有表头,仅仅加上了这一列,可是该列都还没內容,大家来为该列添充数据信息。

PHP Code拷贝內容到剪贴板

  1. function rating_column_content($column_name$post_id) {   
  2.     if ($column_name == ‘rating’) {   
  3.         $rating_value = get_post_meta( $post_id‘_rating’, true );   
  4.         echo ($rating_value / 2) . ‘星’;   
  5.     }   
  6. }   
  7. add_action(‘manage_posts_custom_column’‘rating_column_content’, 10, 2);   

这儿采用了 manage_posts_custom_column Action,查询该Action的文本文档,我们可以了解该Action能够用于加上或改动列表的列,包含內建的及其自定的列表列。该Action 接纳2个主要参数,第一个是列表列的姓名($column_name,即第一步中的’rating’,并非’推荐指数’),第二个是当今的文章ID($post_id)。依据这两个主要参数,大家就可以依据当前端的姓名来获得文章的基本信息了。

这儿根据分辨当今列表列是否’rating’,是则依据文章ID获得到推荐指数的值,并恢复出厂设置輸出。

接下去使他可以开展排序。根据 manage_edit-post_sortable_columns Filter来特定什么列能够用于排序。

PHP Code拷贝內容到剪贴板

  1. function rating_column_table_sorting( $columns ) {   
  2.     $columns[‘rating’] = ‘rating’;   
  3.     return $columns;   
  4. }   
  5. add_filter( ‘manage_edit-post_sortable_columns’‘rating_column_table_sorting’ );  

加上后,点一下“推荐指数”列表头,能够见到网页页面的详细地址早已变来到排序的网页页面(/wp-admin/edit.php?orderby=rating&order=asc),可是列表却并沒有排序。这是由于WordPress并不怎样依据’rating’来排序。

接下去就告知WordPress怎样依据’rating’排序。

PHP Code拷贝內容到剪贴板

  1. function rating_column_orderby( $vars ) {   
  2.     if ( isset( $vars[‘orderby’] ) && $vars[‘orderby’] == ‘rating’ ) {   
  3.         $vars[‘orderby’] = ‘meta_value_num’;   
  4.         $vars[‘meta_key’] = ‘_rating’;   
  5.     }   
  6.     return $vars;   
  7. }   
  8. 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就可以(编码中注解的一部分,删除了评价列)。

PHP Code拷贝內容到剪贴板

  1. function add_rating_column($columns) {   
  2.     $new = array();   
  3.     foreach($columns as $key => $title) {   
  4.         if ($key == ‘comments’) {   
  5.             $new[‘rating’] = ‘推荐指数’;   
  6.         }   
  7.         // if ($key == ‘comments’) {   
  8.         //  continue;   
  9.         // }   
  10.         $new[$key] = $title;   
  11.     }   
  12.     return $new;   
  13. }  

作者 网络

发表评论

您的电子邮箱地址不会被公开。