Puede conectarse pre_insert_term
, verificar la taxonomía y si el usuario tiene o no el rol especificado de la siguiente manera:
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);
Esto evitará que el usuario inserte nuevos términos, pero les permitirá buscar y agregar términos existentes a una publicación.
Tenga en cuenta que cuando está en la pantalla de edición posterior, un usuario puede ingresar un nombre de término que no existe y presionar enter o hacer clic en el botón Agregar que agregará el término al DOM; sin embargo, en este punto, el término no se agrega a la base de datos hasta que el usuario publica o actualiza la publicación, momento en el cual el término será rechazado.