How to set individual capabilities on a taxonomy? Or how to re-register an existing taxonomy?

This should works

add_action( 'init', 'register_category_again', 1 );

function register_category_again() {
  $user = wp_get_current_user();
  if ( $user->roles[0] != 'your_custom_role' ) return;
  global $wp_taxonomies;
  unset( $wp_taxonomies['category'] );
  global $wp_rewrite;
  $rewrite = array(
    'hierarchical' => true,
    'slug' => get_option('category_base') ? get_option('category_base') : 'category',
    'with_front' => ! get_option('category_base') || $wp_rewrite->using_index_permalinks(),
    'ep_mask' => EP_CATEGORIES,
  );
  register_taxonomy( 'category', 'post', array(
    'hierarchical' => true,
    'query_var' => 'category_name',
    'rewrite' => $rewrite,
    'public' => true,
    'capabilities' => array(
      'manage_terms'=> 'manage_categories',
      'edit_terms'=> 'manage_categories',
      'delete_terms'=> 'manage_categories',
      'assign_terms' => 'read'
    ),
    'show_ui' => true,
    'show_admin_column' => true,
    '_builtin' => true,
  ) );
}

Leave a Comment