WordPress 自定义文章列表列的完成办法

上一篇,咱们应用 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 模板制造进程中的谬误定位办法

在wordpress模板制造进程中,有一些貌似复杂的成绩,其实只需确定了成绩呈现的地位,大少数都能够自行处理。...

为wordpress绑定多个域名的办法分享

咱们都晓得,wordpress默许状况下会主动跳转到后盾规则的home_url下来,例如你的空间同时绑定了jb51.net和w...

在Ubuntu 14.04上部署 PHP 环境及 WordPress

软件及版本抉择 Ubuntu 14.04 Ubuntu 是目前用户数量首屈一指的发行版,面前有大土豪保护,能够说是轻量级用...

Wordpress改换主题之后出错的处理办法

明天吃完午饭,劳动劳动,最近搞了一下google adsense,不过最终的审核没经过,我想会不会是界面不难看呢,...

WordPress中设置Post Type自定义文章类型的实例教程

什么是自定义post? 不要想当然的以为这里的post就是就是指博客中的文章,它只不过是一个文章类的代理词...

详解WordPress中提示装置插件以及暗藏插件的性能完成

提示用户以后主题需求的插件 很多主题都需求一些插件的支持,这时你就需求提示用户需求装置的插件,本文将教...

需求提交

客服服务