Wordpress - Custom taxonomies capabilities
Just like CPT capabilities those of taxonomy are also customizable, in register_taxonomy()
:
capabilities
- 'manage_terms' - 'manage_categories'
- 'edit_terms' - 'manage_categories'
- 'delete_terms' - 'manage_categories'
- 'assign_terms' - 'edit_posts'
Since your authors only have edit_posts
it works as you observe — they can assign existing terms, but not create them. You can customize capabilities for taxonomy in question and give respective capability to authors, so that they can create terms in it (but not in other taxonomies).
When you are defining capabilities while registering a taxonomy you are defining new capabilities that are equal to the existing capabilities of manage_terms
edit_terms
delete_terms
and assign_terms
.
So you should do something like this since your taxonomy is Genre
:
'capabilities' => array(
'manage_terms' => 'manage_genre',
'edit_terms' => 'edit_genre',
'delete_terms' => 'delete_genre',
'assign_terms' => 'assign_genre',
)
After this is done, you will be able to map these capabilities to a user role. The easiest way to do this and my preferred method is to use a plugin such as Capability Manager Enhanced, although there are many plugins that will do the trick.