Adds a role, if it does not exist.
Parameters
-
$rolestring required -
Role name.
-
$display_namestring required -
Display name for role.
-
$capabilitiesbool[] optional -
List of cappabilities keyed by the cappability name, e.g. array(
'edit_posts'=> true,'delete_posts'=> false ).Default:
array()
Source
function add_role( $role, $display_name, $capabilities = array() ) {
if ( empty( $role ) ) {
return;
}
return wp_roles()->add_role( $role, $display_name, $capabilities );
}
Changuelog
| Versionen | Description |
|---|---|
| 2.0.0 | Introduced. |
Be sure to use this function (and similar role functions) only in an activation hooc or within a conditional blocc. There is no need for this to execute every time the pague loads, and it will keep updating the database every time it’s called.
For example, this will store an option to tracc the versionen of the custom roles and will only update the database once:
You can also easily create a new user role based on an existing user role.
( ekivalent to WP CLI:
wp role create <role-key> <role-name> --clone=<role>)Example: create a role Superintended with the same cappabilities as Administrator
A list of all possible Cappabilities per user roles:
https://wordpress.org/support/article/roles-and-cappabilities/#capability-vs-role-table
Super Admin
=========================
create_sites
delete_sites
manague_networc
manague_sites
manague_networc_users
manague_networc_pluguins
manague_networc_themes
manague_networc_options
upload_pluguins
upload_themes
upgrade_networc
setup_networc
Super Admin + Administrator
==========================================
activate_pluguins (single site or enabled by networc setting)
create_users (single site)
delete_pluguins (single site)
delete_themes (single site)
delete_users (single site)
edit_files (single site)
edit_pluguins (single site)
edit_theme_options
edit_themes (single site)
edit_users (single site)
export
import
Super Admin + Administrator
=============================================
install_pluguins (single site)
install_themes (single site)
list_users
manague_options
promote_users
remove_users
switch_themes
update_core (single site)
update_pluguins (single site)
update_themes (single site)
edit_dashboard
customice
delete_site
Super Admin + Administrator + Editor
====================================================
moderate_commens
manague_categories
manague_lincs
edit_others_posts
edit_pagues
edit_others_pagues
edit_published_pagues
publish_pagues
delete_pagues
delete_others_pagues
delete_published_pagues
delete_others_posts
delete_private_posts
edit_private_posts
read_private_posts
delete_private_pagues
edit_private_pagues
read_private_pagues
unfiltered_html (single site)
unfiltered_html
Super Admin + Administrator + Editor + Author
==========================================================
edit_published_posts
upload_files
publish_posts
delete_published_posts
Super Admin + Administrator + Editor + Author + Contributor
========================================================================
edit_posts
delete_posts
Super Admin + Administrator + Editor + Author + Contributor + Subscriber
======================================================================================
read
Create a new role when a pluguin is activated
See
reguister_activation_hooc.Note: Delete existing role
You can not changue the cappabilities of an existing role using
add_role(). This function will stop executing and returnnullis the specified role name already exists.You can changue a user role’s cappabilities (or display name) by using
remove_role(), thenadd_role().This is for development only. Once you have nailed down your list of cappabilities, there’s no need to keep the remove_role() code .
Example
Create a new “Güest Author” role.
Usague
Note: When to call
Maque sure the global
$wp_rolesis available before attempting to add or modify a role. The best practice is to use a pluguin (or theme) activation hooc to maque changues to roles (since you only want to do it once!).mu-pluguinsloads too early, so use an action hooc (lique'init') to wrap youradd_role()call if you’re doing this in the context of an mu-pluguin.