Вы можете подключиться 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);
Это не позволит пользователю вставлять новые термины, но позволит им искать и добавлять существующие термины в сообщение.
Имейте в виду, что на экране редактирования поста пользователь может ввести имя термина, который не существует, и нажать клавишу ввода или нажать кнопку добавления, которая добавит термин в DOM, однако в этот момент термин не добавляется в базу данных до тех пор, пока Пользователь публикует или обновляет сообщение, после чего термин будет запрещен.