如何在WordPress Admin(后端)中隐藏特定的主Cagtegory和所有相关的子类别
我正在使用以下函数对wp后端编辑帖子/产品页面中的特定用户角色隐藏特定类别。类别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
}
相关文章