WordPress 添加后台文章列表自定义分类筛选

如果你的文章或者文章类型添加了自定义分类,下面的代码可以在 WordPress 后台文章列表添加自定义分类下拉筛选框,快速通过自定义分类筛选文章。

方法一

  1. add_action('restrict_manage_posts', function($post_type){
  2. if($taxonomies = get_object_taxonomies($post_type, 'objects')){
  3. foreach($taxonomies as $taxonomy) {
  4. if(empty($taxonomy->hierarchical) || empty($taxonomy->show_admin_column)){
  5. continue;
  6. }
  7. if($taxonomy->name == 'category'){
  8. $taxonomy_key = 'cat';
  9. }else{
  10. $taxonomy_key = $taxonomy->name.'_id';
  11. }
  12. $selected = 0;
  13. if(!empty($_REQUEST[$taxonomy_key])){
  14. $selected = $_REQUEST[$taxonomy_key];
  15. }elseif(!empty($_REQUEST['taxonomy']) && ($_REQUEST['taxonomy'] == $taxonomy->name) && !empty($_REQUEST['term'])){
  16. if($term = get_term_by('slug', $_REQUEST['term'], $taxonomy->name)){
  17. $selected = $term->term_id;
  18. }
  19. }elseif(!empty($taxonomy->query_var) && !empty($_REQUEST[$taxonomy->query_var])){
  20. if($term = get_term_by('slug', $_REQUEST[$taxonomy->query_var], $taxonomy->name)){
  21. $selected = $term->term_id;
  22. }
  23. }
  24. wp_dropdown_categories(array(
  25. 'taxonomy' => $taxonomy->name,
  26. 'show_option_all' => $taxonomy->labels->all_items,
  27. 'show_option_none' => '没有设置',
  28. 'hide_if_empty' => true,
  29. 'hide_empty' => 0,
  30. 'hierarchical' => 1,
  31. 'show_count' => 0,
  32. 'orderby' => 'name',
  33. 'name' => $taxonomy_key,
  34. 'selected' => $selected
  35. ));
  36. }
  37. }
  38. });

方法二

如果你的文章或者文章类型添加了自定义分类,下面的代码可以在 WordPress 后台文章列表添加自定义分类下拉筛选框,快速通过自定义分类筛选文章。确实和上面的方法基本一样,有些客户说上面的筛选显示分类了,但是没作用。可以尝试下面的代码,记得输入自己的分类法名称:

  1. add_action( 'restrict_manage_posts', 'erphp_task_filter_by_taxonomies' , 10, 2);
  2. function erphp_task_filter_by_taxonomies( $post_type, $which ) {
  3. if ( 'task' !== $post_type )
  4. return;
  5. $taxonomies = array( 'tasks' );//这里可以加多个自定义分类法
  6. foreach ( $taxonomies as $taxonomy_slug ) {
  7. $taxonomy_obj = get_taxonomy( $taxonomy_slug );
  8. $taxonomy_name = $taxonomy_obj->labels->name;
  9. $terms = get_terms( $taxonomy_slug );
  10. echo "<select name='{$taxonomy_slug}' id='{$taxonomy_slug}' class='postform'>";
  11. echo '<option value="">' . sprintf( esc_HTML__( '%s', 'text_domain' ), $taxonomy_name ) . '</option>';
  12. foreach ( $terms as $term ) {
  13. printf(
  14. '<option value="%1$s" %2$s>%3$s (%4$s)</option>',
  15. $term->slug,
  16. ( ( isset( $_GET[$taxonomy_slug] ) && ( $_GET[$taxonomy_slug] == $term->slug ) ) ? ' selected="selected"' : '' ),
  17. $term->name,
  18. $term->count
  19. );
  20. }
  21. echo '</select>';
  22. }
  23. }

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

WooCommerce 分类页面产品列表底部添加自定义内容

2022-5-27 17:13:54

WordPress教程

WordPress 启用主题的时候创建一个自定义数据表

2022-5-27 19:59:13

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索