Você pode conectar-se pre_insert_term
, verificar a taxonomia e se o usuário tem ou não a função especificada da seguinte maneira:
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);
Isso impedirá que o usuário insira novos termos, mas permitirá que ele pesquise e adicione termos existentes a uma postagem.
Lembre-se de que, quando na tela de pós-edição, um usuário pode digitar um nome de termo que não existe e pressionar enter ou clicar no botão Adicionar, que adicionará o termo ao DOM; no entanto, nesse ponto, o termo não será adicionado ao banco de dados até que o o usuário publica ou atualiza a postagem em que o termo não será permitido.