如何在WordPress后台「所有书籍」页面显示自定义分类(book_cat)列
嘿,这个问题我之前也碰到过!要在后台「所有书籍」列表页直接显示专属的book_cat分类,不用点进编辑页查看,咱们可以用两种方法搞定,给你详细拆解下:
解决方案:在后台「所有书籍」列表显示book_cat分类
方法1:注册自定义文章类型时直接关联分类并启用列显示
你可以在register_post_type的参数里,添加taxonomies字段关联你的book_cat,同时完善标签配置,让WordPress自动识别并显示分类列。修改你的post_types()函数如下:
function post_types() { register_post_type('book', array( 'supports' => array('title', 'editor', 'excerpt'), 'public' => true, 'taxonomies' => array('book_cat'), // 关联自定义分类法 'show_in_rest' => true, 'labels' => array( 'name' => '书籍', 'singular_name' => '书籍', 'all_items' => '所有书籍', // 其他标签可按需补充 ), // 保留你原本的其他参数... )); } add_action('init', 'post_types');
不过有时候因为分类注册顺序等问题,这个方法可能不生效,这时候就用更稳妥的方法2。
方法2:通过钩子手动添加并渲染分类列
如果方法1没达到预期,咱们可以用WordPress的两个钩子,手动在列表页添加分类列并填充内容,灵活性更高:
// 第一步:给「所有书籍」列表新增book_cat列 add_filter('manage_book_posts_columns', 'add_book_cat_column'); function add_book_cat_column($columns) { // 把分类列插入到标题列后面,位置可以按需调整 $new_columns = array(); foreach ($columns as $key => $value) { $new_columns[$key] = $value; if ($key === 'title') { $new_columns['book_cat'] = '书籍分类'; } } return $new_columns; } // 第二步:为每个书籍条目填充对应的book_cat分类内容 add_action('manage_book_posts_custom_column', 'render_book_cat_column', 10, 2); function render_book_cat_column($column, $post_id) { if ($column === 'book_cat') { // 获取当前书籍关联的book_cat分类 $terms = get_the_terms($post_id, 'book_cat'); if ($terms && !is_wp_error($terms)) { $term_links = array(); foreach ($terms as $term) { // 给分类名加上跳转链接,方便直接查看同分类书籍 $term_links[] = '<a href="' . esc_url(admin_url('edit.php?post_type=book&book_cat=' . $term->slug)) . '">' . esc_html($term->name) . '</a>'; } echo implode(', ', $term_links); } else { echo '未分类'; } } }
把这段代码加到你的主题functions.php或者自定义插件里,刷新后台「所有书籍」页面,就能看到分类列啦,而且分类名还带跳转链接,用起来超方便!
小提示
- 如果你的
book_cat是后续才注册的,一定要保证注册分类法的代码先于自定义文章类型的注册代码执行,不然关联会失效。 - 要是想调整列的宽度,除了后台直接拖拽列边框,也可以加自定义CSS来精准控制。
内容的提问来源于stack exchange,提问作者Wasteland
相关产品推荐
相关产品推荐

