你可以钩住pre_insert_term
, 检查分类以及用户是否具有指定的角色,如下所示:
function disallow_insert_term($term, $taxonomy) {
$user = wp_get_current_user();
if ( $taxonomy === \'post_tag\' && in_array(\'somerole\', $user->roles) ) {
return new WP_Error(
\'disallow_insert_term\',
__(\'Your role does not have permission to add terms to this taxonomy\')
);
}
return $term;
}
add_filter(\'pre_insert_term\', \'disallow_insert_term\', 10, 2);
这将阻止用户插入新术语,但允许他们搜索现有术语并将其添加到帖子中。
Beaware,当用户在post edit屏幕上输入一个不存在的术语名称,然后按enter键或单击add按钮,将该术语添加到DOM中,但此时该术语不会添加到数据库中,直到用户发布或更新帖子,此时该术语将被禁用。