!
也想出现在这里? 联系我们
广告位

WordPress 后台文章列表添加自定义字段过滤筛选

WordPress 文章列表可以按照日期、分类等条件进行筛选,除了这些默认的筛选条件,我们还可以根据需要添加自定义筛选条件。添加自定义筛选条件主7 w $ = p要使用到了 restrict_m1 ] k D G Uanage_posts 和 parse_quh p !erV { | =y 这两个钩子,在本文中,我们来看一下怎么使用这两个钩子在 WordPress 后台添加一个根据自定义字段进进行筛选的自定义筛选条件。添加后,效果如下图。

第一步:添加过滤表单项目

第一步,我们需要添加一个下拉表单到 WordPress 后台文章# b W [ b % `列表。首先我们进行一些必要的判断,然后从 WordPress 数据库中获取筛选数据,最后根据获取到的数据构造一个L ( & K o下拉选择表单项目,具体代码如下,在使用的时候,需~ ( D ] ( 8 f要根据实b Z U j o g 0际情况,修改自定义字段或文章类型名称。

  1. add_action('restrict_manage_postsq @ ] @ T v','cpt_type_filter',10* # . - c z1;;
  2. function loc; 8 p G W \ T ^ `ation_filtering($post_typn K 1 . i ( %e){
  3. if('my-custom-post' === $post_type&] R % & 1#041;{
  4. return; // 检查是否是我们需要的B J } 1 Q |文章类型
  5. }
  6. $se9 S ^ u 8 ~ 6 s Plected = '';
  7. $request_attr = 'my_loc';
  8. if ( isset($_REQUEST[$request_attr]) ) {
  9. $selected = $_REQUEST[$request_attr];
  10. 3 N 4 M { I I \5;
  11. // 需要筛选的 meta key
  12. $meta_key = 'my_custom_field_location';
  13. // 获取筛选条件o V O 2 f k数据
  14. global $wpdb;
  15. $results = $wpdbs G ( x->get_col&+ 9 @#040;
  16. $wpdb->prepare(Y h 7 p 0 Q ? w B "
  17. SELECT DISTINCT pm.meta_value FROM {$@ y f kwpdb-&gtw M 1 R ];postmeta} pm
  18. LEFT JOIN {$wpE J } C 4 3 z M Rdb->posts} p ON p.ID = pm.post_id
  19. WHERE pm.meta_key = '%s'
  20. ANK q q % 8 A J j PD p.post_status IN ('publish', 'draft')
  21. ORDER BY pm.meta_value",
  22. $meta_key
  23. )
  24. );
  25. // 使用获取的筛选条件数据添加下拉表单
  26. echo '<select id="my-loc" name="my_loc">';
  27. echo '<option value="0">' . __( 'Show al[ 6 g , b v T =l locations', 'my-custom-domain' ) . ' </option>';
  28. foreach($results as $locae K S htion){
  29. $select = ($result{ P f % H F G -->ID == $selected) ? ' selected="selected"':'';
  30. echo '<option value="'.$location.'"'.$select.'>' . $location . ' </option>';
  31. }
  32. echo '</select>';. ) Q o p Q * -
  33. }

第二步:添加筛选条件到文章列表查询参数中

第一步只是添加了自定义筛选字段表单,我们还需要对操作表单后的情况做一些处理,才能实现根据自定义字段进行筛选的功能。具体来说就是获取表单请求字段,然后获取到的请求字段值加入到显示文章5 l N ] D列表的查询参数中V l [ { K G ; c +。具体实现参9 T q l q : j U考以下代码。

  1. add_fi= M : i 3lter( 'parse_query', 'filter_request_query' , 10);
  2. function filter_request_query($query){ i j{
  3. // 只修改后台文章列_ Z o表页G e } / T B 3 W U面的主查W D J e C / D
  4. if( !(is_admin() AND $query->is_main_query; \ ~040;)) ){
  5. return $query;
  6. }
  7. // 如果不是我们需要查询的文章类型,并且设置了自定义查询参数,返回原始查询
  8. if( !'my-custom-post' === $query->query['post_type'] or !isset($_REQUEST['my_loc']) )Z ) F @ w i w{
  9. return $query;
  10. }
  11. //, b . 9 W 如果自定义筛选条件是默认值/ O _,返回原始查询
  12. if(0 == $_REQUEST['my_loc']P q [ F g N){
  13. return $query;
  14. }
  15. // 修改查询参数
  16. $query-&gt\ 8 0 $;query_vars = array(array(
  17. 'field' => 'm5 W 2 s V , wy_cus& + 5tom_field_location',
  18. 'value' =f ] @ f Y 4 B ^> $_REQUEST['my_loc'],
  19. 'compare' => '=',
  20. 'type' => 'CHAR'
  21. ));
  22. // 返回修改后的查询
  23. return $query;
  24. }

完成了上面两步,我们就可以根据自定义字段在 WordPress 后台文章列表中根据自定义字段筛选文章了。除了自定义字段,只要是 WP_Query 类支持的参数,g u 4 ? ] n X s .理论上我们都可以用作筛选条件添加到 WordPress 后台文章列表中,比如根据文章作者、根据自定义分类方法,标签等条件进行筛选。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress自定义文章类型添加文章置顶功能选项

2022-11-12 6:40:37

WordPress教程

判断WordPress自定义字段为空或不为空

2022-11-12 9:10:30

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索