如何在 Wordpress Admin(后端)中隐藏特定的 Main Category 和所有相关的子类别

How to hide specific Main Cagtegory and all associated child categories in Wordpress Admin (Backend)

我使用以下功能在 wp 后端编辑 post / 产品页面中对特定用户角色隐藏特定类别。类别ID 330具有多个子类别。知道如何同时隐藏主要类别 (330) 和所有子类别,而不考虑子类别的数量吗?

    /*
     * Hide Specified Categories (by ID) from shop_manager Role
    */

    add_action( 'admin_init', 'wpse_55202_do_terms_exclusion_shop_manager_role' );
    function wpse_55202_do_terms_exclusion_shop_manager_role() {
        global $current_user;
        // if( current_user_can('editor') ) {
        if ( in_array('shop_manager', $current_user->roles) )
            add_filter( 'list_terms_exclusions', 'wpse_55202_list_terms_exclusions_shop_manager_role', 10, 2 );
        }

    function wpse_55202_list_terms_exclusions_shop_manager_role($exclusions,$args) {
        return $exclusions . " AND ( t.term_id <> 330 )  AND ( t.term_id <> 430 )"; 
    }

一次全部隐藏...

以下代码排除父类别和所有子类别。

    /*
     * Hide Specified Categories (by ID) from shop_manager Role
    */
    add_action( 'admin_init', 'wpse_55202_do_terms_exclusion_shop_manager_role' );
    function wpse_55202_do_terms_exclusion_shop_manager_role() {
        global $current_user;
        // if( current_user_can('editor') ) {
        if ( in_array('shop_manager', $current_user->roles) )
            add_filter( 'list_terms_exclusions', 'wpse_55202_list_terms_exclusions_shop_manager_role', 10, 2 );
        }
    function wpse_55202_list_terms_exclusions_shop_manager_role($exclusions,$args) {
        $children_of_parent_cat = implode(',',get_term_children(458,'product_cat')); // get all child categories
        $children_of_parent_cat = (empty($children_of_parent_cat) ? '' : ",$children_of_parent_cat"); // if childs empty or not
        // return $exclusions . " AND (t.term_id NOT IN (458{$children_of_parent_cat}))";
        return $exclusions . " AND (t.term_id NOT IN (458 ".$children_of_parent_cat." ))"; // Exlculde parent and all child cats
    }