WordPress 媒體庫(附件)默認不支援分類/標簽,導致圖片、文檔難以組織篩選。本文提供三種方案:**一行代碼復用內建分類**、**一行代碼復用內建標簽**、**註冊獨立分類法(專業推薦)**,並附帶批量編輯插件推薦。
<?php
// functions.php
function ludou_attach_categories() {
register_taxonomy_for_object_type('category', 'attachment');
}
add_action('init', 'ludou_attach_categories');
function ludou_attach_tags() {
register_taxonomy_for_object_type('post_tag', 'attachment');
}
add_action('init', 'ludou_attach_tags');
function ludou_register_media_category() {
$args = [
'label' => '媒體分類',
'labels' => [
'name' => '媒體分類',
'singular_name' => '媒體分類',
'search_items' => '搜索媒體分類',
'all_items' => '所有媒體分類',
'edit_item' => '編輯媒體分類',
'update_item' => '更新媒體分類',
'add_new_item' => '新增媒體分類',
'new_item_name' => '新媒體分類名稱',
'menu_name' => '媒體分類',
],
'hierarchical' => true, // 像分類目錄一樣分層
'show_admin_column' => true, // 列表頁顯示分類列
'show_ui' => true, # 後台顯示管理界面
'query_var' => true, # 支援 ?media_category=xxx 查詢
'rewrite' => ['slug' => 'media-category'], // 前端重寫規則
'show_in_rest' => true, # 區塊編輯器/REST API 可見
];
register_taxonomy('media_category', 'attachment', $args);
}
add_action('init', 'ludou_register_media_category');
| 維度 | 復用 category | 復用 post_tag | 獨立 media_category |
|---|---|---|---|
| 代碼量 | 1 行 | 1 行 | ~30 行 |
| 數據隔離 | ❌ 與文章共用 | ❌ 與文章共用 | ✅ 完全隔離 |
| 層級結構 | ✅ 支援父子 | ❌ 扁平 | ✅ 可選 |
| 列表頁顯示 | ✅ | ✅ | ✅ (show_admin_column) |
| REST API | ✅ | ✅ | ✅ (show_in_rest) |
| 適用場景 | 小站、內容少、分類通用 | 小站、標籤通用 | 中大型站、媒體管理獨立、需前端歸檔 |
function ludou_attach_cats_tags() {
register_taxonomy_for_object_type('category', 'attachment');
register_taxonomy_for_object_type('post_tag', 'attachment');
}
add_action('init', 'ludou_attach_cats_tags');
Media Library Categories(官方倉庫免費)
// 短代碼 [media_gallery category="design"]
add_shortcode('media_gallery', function($atts) {
$atts = shortcode_atts(['category' => '', 'number' => 20], $atts);
$query = new WP_Query([
'post_type' => 'attachment',
'post_status' => 'inherit',
'posts_per_page' => $atts['number'],
'tax_query' => $atts['category'] ? [[
'taxonomy' => 'media_category', // 或 'category'
'field' => 'slug',
'terms' => $atts['category'],
]] : [],
]);
ob_start();
if ($query->have_posts()) {
echo '<div class="media-gallery">';
while ($query->have_posts()) { $query->the_post();
echo wp_get_attachment_image(get_the_ID(), 'medium', false, ['loading' => 'lazy']);
}
echo '</div>';
}
wp_reset_postdata();
return ob_get_clean();
});
給媒體文件加分類/標簽,本質是將「非結構化文件」轉為「結構化資產」。選對分類法模型,能讓編輯效率提升 80% 以上,前端展示靈活度成倍增長。