WordPress 自定义文章列表列的实现方法

所属分类: CMS教程 / WordPress 阅读数: 645
收藏 0 赞 0 分享
上一篇,我们使用 Meta Box 为文章添加了一个“推荐指数”字段。添加后用了一段时间,似乎不那么方便,编辑文章虽然方便了,但是在文章列表里却不能直观的显示出文章推荐指数,而且不能根据推荐指数来排序文章,鉴于这些不足,今天就来完善一下,让他更方便好用。

今天要实现的效果如下图,具体的功能就是在列表里添加一列“推荐指数”,用来显示每篇文章的推荐指数,同时可以根据“推荐指数”来进行文章排序。





首先要做的就是在表头添加“推荐指数”列。
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 接受两个参数,第一个是列表列的名字($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. }  
更多精彩内容其他人还在看

WordPress实现评论后可显示内容中附件下载地址的方法

这篇文章主要介绍了WordPress实现评论后可显示内容中附件下载地址的方法,可实现用户在评论后显示内容中附件下载地址的功能,涉及wordpress针对数据库的相关操作与判定技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress实现的首页幻灯片展示功能示例【附demo源码】

这篇文章主要介绍了WordPress实现的首页幻灯片展示功能的方法,可实现后台勾选推送到首页幻灯片的功能,末尾还附带demo源码供读者下载参考,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress后台地址被改导致无法登陆后台的简单解决方法

这篇文章主要介绍了WordPress后台地址被改导致无法登陆后台的简单解决方法,简单分析了后台无法登陆的原因与相应的解决方法,涉及针对wordpress配置项的简单修改,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress使用自定义文章类型实现任意模板的方法

这篇文章主要介绍了WordPress使用自定义文章类型实现任意模板的方法,可通过自定义文章类型来实现任意模版的使用,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPress实现回复文章评论后发送邮件通知的功能

这篇文章主要介绍了WordPress实现回复文章评论后发送邮件通知的功能,涉及wordpress针对评论与邮件的相关操作技巧,需要的朋友可以参考下
收藏 0 赞 0 分享

WordPres限制非管理员访问管理面板的方法

大家可能发现了当实现了前端用户中心,后台控制面板就失去了作用,那么限制其他用户进入后台控制面板就很有必要了!那么我们要怎么做呢?通过下面这篇文章分享的方法后,只有管理员才能进入,否则是其他注册用户进入则会跳转首页。下面来一起看看吧。
收藏 0 赞 0 分享

wordpress自定义上传文件类型的方法

这篇文章主要给大家介绍了wordpress自定义上传文件类型的方法,如WordPress默认允许上传 .exe 后缀名的可运行文件,那么我们怎么禁止用户在WordPress后台发表文章时上传 .exe 后缀名的文件呢?以及如何让wrodpress允许上传zip文件格式,下面来一起
收藏 0 赞 0 分享

WordPress取消英文标点符号自动替换中文标点符号的优雅方法

这篇文章主要介绍了WordPress取消英文标点符号自动替换中文标点符号的优雅方法,需要的朋友可以参考下
收藏 0 赞 0 分享

wordpress在安装使用中出现404、403、500及502问题的分析与解决方法

wordpress是很多新手站长搭建个人博客最喜爱的程序,但是最近在使用WordPress的时候遇到了一些问题,所以想着将遇到问题总结分享出来,下面这篇文章主要给大家介绍了关于wordpress在安装使用中出现404、403、500及502问题的解决方法,需要的朋友可以参考下。
收藏 0 赞 0 分享

WordPress中删除垃圾评论的方法

这篇文章主要介绍了WordPress中删除垃圾评论的方法,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多