随便撸源码(www.suibianlu.com)精品网站源码,织梦模版,游戏源码,网赚营销教程分享平台

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

时间:2021-06-19 [WordPress教程] 作者:随便撸源码

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

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





首先要做的就是在表头添加“推荐指数”列。
PHP Code复制内容到剪贴板
  1. functionadd_rating_column($columns){
  2. $columns['rating']='推荐指数';
  3. return$columns;
  4. }
  5. add_filter('manage_posts_columns','add_rating_column');

manage_posts_columnsFilter可以应用管理文章页面的表头里,用来修改表头信息。注意该Filter不会应用到Page的列表页面,如需用到,请使用manage_pages_columns或者manage_${post_type}_posts_columns

有了表头,只是添加了这一列,但是该列还没有内容,我们来为该列填充数据。

PHP Code复制内容到剪贴板
  1. functionrating_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_columnsFilter来指定哪些列可以用来排序。

PHP Code复制内容到剪贴板
  1. functionrating_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. functionrating_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. functionadd_rating_column($columns){
  2. $new=array();
  3. foreach($columnsas$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  自定义  文章列表  折翼天使  莎莎源码  吾爱源码  其他源码  微赞模块  源码  网站插件  跟版网  dede58 

转载请注明来源:随便撸源码:WordPress 自定义文章列表列的实现方法

本文永久链接地址:https://www.suibianlu.com/25464.html

郑重声明:
本站所有内容均由互联网收集整理、网友上传,并且以计算机技术研究交流为目的,仅供大家参考、学习,不存在任何商业目的与商业用途。 若您需要商业运营或用于其他商业活动,请您购买正版授权并合法使用。
我们不承担任何技术及版权问题,且不对任何资源负法律责任。
如无法下载,联系站长索要