WooCommerce & WordPress 隱藏未分類

WordPress 或 WooCommerce 預設都會有一個未分類,顧名思義,是用來儲存沒有設定分類的文章,但在前端頁面跑出這個「未分類」很奇怪,所以本篇要教大家怎麼隱藏它

隱藏與刪除未分類

隱藏予刪除有本質上的不一樣,未分類其實還是一個很好用的功能,能讓編輯快速的找到還沒有被編入分類的文章進行操作,只是前端我不想出現這個分類罷了,所以只需要在前端隱藏未分類就可以了

您仍然想刪除未分類,可參考下列連結
https://passwordprotectwp.com/remove-uncategorized-wordpress/

隱藏文章未分類

首先我們必須將未分類文章的代稱修改
文章 > 分類

找到未分類這個項目,按快速編輯連結,統一將未分類的代稱改為「uncategorized」,然後更新分類

WooCommerce 商品隱藏未分類

其實跟文章分類一樣,先修改代稱
商品 > 分類

一樣找到未分類這個項目,按快速編輯連結,統一將未分類的代稱改為「uncategorized」,然後更新分類

編輯代碼

透過 WordPress get_terms 這個過濾器,去過濾文章和商品分類,在前端時,透過過濾器找到未分類,刪除未分類,此一作法,只會讓前端不會顯示出來,後台一樣可以正常使用未分類這個功能。

確認上述步驟完成,把下方這段代碼貼到當前主題目錄中的 functions.php 中即可

/**
 * 隱藏未分類
 * @link https://v123.tw/woocommerce-and-post-hide-category-uncategorized/
 */
add_filter('get_terms', 'v123_hide_product_uncategorized', 10, 4);
function v123_hide_product_uncategorized($terms, $taxonomies, $args , $term_query)
{
    // 要篩選的分類法
    $hide_taxonomies = ['product_cat','category'];
    // 未分類或要隱藏分類的slug,要在上面篩選的分類法中才有作用
    $hide_term_slugs = ['uncategorized'];
    if (array_intersect($hide_taxonomies, $taxonomies) && !is_admin()) {
        foreach ($terms as $k => $term) {
            if (in_array($term->slug, $hide_term_slugs)) {
                unset($terms[$k]);
            }
        }
    }
    return $terms;
}

參考資料

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料