Show taxonomy term for administrators only in node creation form I have a content type Topic. The topic has the taxonomy terms -health -fitness and -news. I only want certain roles like administrators to be able to see and use the taxonomy term - news when creating topics. I need all other users to only see and use the other two.

How do I go about this? Would hook form alter be the right direction?
If you like to hide the whole field, you probably are looking for the Field Permissions module:


  The Field Permissions module allows site administrators to set field-level permissions to edit, view and create fields on any entity.


If you like to hide certain terms only, you could use Views as reference method and filter your terms accordingly:


Create a new view for your taxonomy terms.
Create a Filter criteria "Term ID" to filter out all terms that shouldn't be available to non-privileged users, add a "Entity reference" display to that view and configure its Term name in the format settings.
Implement hook_views_query_alter() in a custom module and remove the filter criteria, if the users have the elevated roles:


mymodule.module:

use Drupal\views\ViewExecutable;
use Drupal\views\Plugin\views\query\QueryPluginBase;

/**
 * Implements hook_views_query_alter()
 */
function mymodule_views_query_alter(ViewExecutable $view, QueryPluginBase $query) {
  if ($view-&gt;id() != 'my_taxonomy_reference_view') {
    return;
  }

  $current_user = \Drupal::currentUser();
  $roles = $current_user-&gt;getRoles();

  if (in_array('USER_ROLE', $roles)) {
    unset($query-&gt;where[1]['conditions']['key_of_condition']);
  }
}



Head to your taxonomy term field settings and choose your view as reference type.


You might have to fiddle a little with the conditions, as the above example is just an outline for how you could do it. I actually didn't try it myself. But it should get you going.