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

要在WordPress后台文章列表中添加自定义分类筛选,您可以使用WordPress提供的一些内置功能和自定义代码。以下是一种方法:

添加自定义分类法(Custom Taxonomy):
首先,您需要创建一个自定义分类法,以便将其应用于文章类型。假设您想要为”文章”(post)添加一个自定义分类,可以在您的主题或插件中添加以下代码:

function custom_taxonomy() {
   $labels = array(
       'name' => '自定义分类',
       'singular_name' => '自定义分类',
       'menu_name' => '自定义分类',
   );
 
   $args = array(
       'labels' => $labels,
       'hierarchical' => true,
       'show_ui' => true,
       'show_admin_column' => true,
       'query_var' => true,
   );
 
   register_taxonomy('custom_category', array('post'), $args);
}
 
add_action('init', 'custom_taxonomy');

这将在文章类型上创建一个名为”自定义分类”的自定义分类法。

添加筛选表单到文章列表页面:
接下来,您需要在文章列表页面添加一个筛选表单。您可以使用restrict_manage_posts动作来实现这一点。将以下代码添加到您的主题的functions.php文件中:

function custom_taxonomy_filter() {
   global $typenow;
   if ($typenow == 'post') { // 仅在文章类型页面显示
       $taxonomy = 'custom_category';
       $terms = get_terms($taxonomy);
       if ($terms) {
           echo "";
           echo "";
           foreach ($terms as $term) {
               $selected = isset($_GET[$taxonomy]) && $_GET[$taxonomy] == $term>slug ? 'selected' : '';
               echo "";
           }
           echo "";
       }
   }
}
 
add_action('restrict_manage_posts', 'custom_taxonomy_filter');

处理筛选操作:
最后,您需要修改WordPress查询以根据筛选条件过滤文章。添加以下代码到functions.php文件中:

function custom_taxonomy_filter_request($query) {
   global $pagenow;
   $taxonomy = 'custom_category';
   $q_vars = &$query>query_vars;
 
   if (isset($_GET[$taxonomy]) && $pagenow == 'edit.php' && $q_vars['post_type'] == 'post') {
       $term = sanitize_text_field($_GET[$taxonomy]);
       $q_vars[$taxonomy] = $term;
   }
}
 
add_filter('parse_query', 'custom_taxonomy_filter_request');

现在,当您访问文章列表页面时,您应该会看到一个名为”自定义分类”的筛选下拉菜单,您可以使用它来筛选文章列表中的文章。这将根据所选的自定义分类来显示相应的文章。请确保根据您的需求进行适当的自定义和样式化。