0%

正威網路行銷工作室,專注於基隆、台北與全台客製化網頁設計,提供專業 RWD 響應式、SEO 搜尋引擎優化、品牌形象設計與網站維護託管服務。

搜尋文章
聯絡資訊
地址基隆市仁二路 220 號 5 樓
追蹤我們

WordPress 媒體庫分類:不用外掛,用 register_taxonomy 替圖片加上獨立分類

用css讓wordpress的留言評論大頭貼旋轉起來

WordPress 的媒體庫只能依日期和檔案類型篩選,圖片一多,要找某個產品、某次活動的照片就很辛苦。如果直接拿文章分類來用,分類清單又會跟文章混在一起。

用一段程式碼,就能替媒體庫加上一組獨立的「媒體分類」,跟文章分類完全分開。

程式碼

加到子主題的 functions.php,或用 Code Snippets 外掛新增。建議用 Code Snippets,之後換主題,分類功能也不會跟著消失:

PHP
add_action( 'init', function () {
    register_taxonomy( 'attachment_category', 'attachment', array(
        'labels'                => array(
            'name'          => '媒體分類',
            'singular_name' => '媒體分類',
            'menu_name'     => '媒體分類',
            'all_items'     => '全部媒體分類',
            'edit_item'     => '編輯媒體分類',
            'add_new_item'  => '新增媒體分類',
            'search_items'  => '搜尋媒體分類',
            'parent_item'   => '上層分類',
        ),
        'hierarchical'          => true,  // 跟文章分類一樣可以有上下層
        'show_ui'               => true,
        'show_admin_column'     => true,  // 媒體庫清單多一欄「媒體分類」
        'show_in_nav_menus'     => false,
        'publicly_queryable'    => false, // 前台不產生分類頁面
        'rewrite'               => false,
        'query_var'             => true,  // 後台可以用網址參數篩選
        'update_count_callback' => '_update_generic_term_count',
    ) );
} );

幾個重點:

  • 分類的代號沿用舊版文章的 attachment_category,以前用過舊程式碼的網站,已經設定好的分類會直接接上。
  • update_count_callback 設成 _update_generic_term_count:媒體檔案的狀態跟一般文章不同,用預設的計算方式,分類後面顯示的「數量」常常會是 0 或算錯。
  • publicly_queryable 設成 false:舊版寫法會在前台替每個媒體分類產生一個頁面,這種只有圖片、沒有內容的頁面,對訪客和搜尋引擎都沒有幫助。

怎麼使用?

1. 建立分類

加好程式碼後,後台「媒體」選單底下會多一個「媒體分類」,用法跟文章分類一樣。可以先把常用的分類建好,例如「產品照」「活動照片」「Logo」。

2. 替圖片指定分類

  • 完整編輯頁面(最方便):在媒體庫切換成清單檢視,滑鼠移到圖片上點「編輯」,右側會出現「媒體分類」的勾選框,勾好後按「更新」。
  • 媒體庫的彈出視窗:在格狀檢視點開圖片,附件詳細資料裡會多一個媒體分類的文字欄位,要輸入分類的代稱(slug),多個分類用半形逗號分隔。這個方式比較容易打錯,建議用上面的完整編輯頁面。

3. 依分類找圖片

在清單檢視中,「媒體分類」那一欄的分類名稱可以直接點,點了就會只列出這個分類的圖片。

加上依分類篩選的下拉選單

想在清單檢視上方多一個下拉選單,直接選分類來篩選,再加上這段:

PHP
add_action( 'restrict_manage_posts', function ( $post_type ) {
    if ( 'attachment' !== $post_type ) {
        return;
    }

    $selected = isset( $_GET['attachment_category'] )
        ? sanitize_text_field( wp_unslash( $_GET['attachment_category'] ) )
        : '';

    wp_dropdown_categories( array(
        'taxonomy'        => 'attachment_category',
        'name'            => 'attachment_category',
        'value_field'     => 'slug',
        'selected'        => $selected,
        'show_option_all' => '所有媒體分類',
        'hide_empty'      => false,
        'hierarchical'    => true,
    ) );
} );

選好分類後按「篩選」,就只會列出該分類的檔案。

注意事項

  • 分類只是標籤:不會搬動檔案位置,也不會改變圖片網址,已經插入文章的圖片完全不受影響。
  • 只在清單檢視能篩選:媒體庫預設的格狀檢視不會出現分類欄位與篩選選單,要切換到清單檢視。
  • 移除程式碼後資料還在:分類與圖片的對應關係存在資料庫裡,之後把程式碼加回來就會恢復。

想要拖拉式的資料夾?

如果需要像電腦資料夾那樣,用拖拉的方式整理圖片,可以考慮媒體分類或資料夾類的外掛(例如 FileBird、Enhanced Media Library)。選擇時注意:

  • 看外掛的更新日期與評價,選有持續維護的。
  • 很多資料夾外掛用自己的方式儲存分類,之後換外掛時,整理好的資料夾可能帶不走。

程式碼的寫法功能比較陽春,但用的是 WordPress 內建的分類機制,資料不會被綁在特定外掛上。

延伸閱讀

媒體庫整理得好,之後更新網站內容也會輕鬆很多。正威網路行銷是 25 年經驗的基隆網頁設計工作室,提供客製化網頁設計與 RWD 響應式網站,也服務台北與全台客戶,歡迎來聊聊。

分享這篇文章

返回文章列表更多「Wordpress代碼教學」文章

發表留言

還沒有人留言,歡迎第一個分享你的想法或問題。留言經審核後才會顯示,Email 不會公開。

讓我們一起打造
您的專屬網站!