K čemu jsou uživatelské role
Snad ve všech systémech, kam vstupuje uživatel, je potřeba zařídit, aby mohl dělat to, co potřebuje, ale zároveň neměl možnost sáhnout někam, kam vy nechcete. Aby se mohl pohybovat v rámci vymezeného prostoru, ať už z bezpečnostních či jiných důvodů. A právě k tomu slouží uživatelské role.
Příklady uživatelských rolí:
- Zákazník – má na webu svůj účet, kde vidí své objednávky a faktury, seznamy přání, případně nějaké zákaznické slevy a cokoli dalšího.
- Člen členské sekce – v případě členských sekcí vidí svůj obsah, který je odemčen právě jemu (registrací nebo koupí) a vidí ho po přihlášení do systému.
- Autor a editor – v případě blogu můžou autoři mít možnost psát a upravovat své články (nikoli však články ostatních), reagovat na komentáře svých článků a podobně. Editor pak může články schvalovat a publikovat a dělat další věci, které autor nemůže.
- Administrátor – je správce systému, zpravidla ten nejvyšší, který má právo zasahovat kamkoli. Stará se o běh systému a zasahuje v případě problémů.
Uživatelské role mají potenciál
Možná si říkáte, k čemu vám takové role budou, když jste na webu sami? Nu, hodit se vám mohou určitě. Uživatelské role ve WordPress totiž můžete použít, i když na webu nemáte e-shop, členské sekce ani nic podobného. Skvěle se totiž hodí ke správě webu.
Typický příklad z praxe:
- Klient si chce upravovat na webu obsah, přidávat galerie, články a další věci.
- Já mám web ve správě a nechci, aby klient sahal, kam nemá (a nebyl zbytečně nervózní a zvědavý, pokud v administraci uvidí nějaké nastavení).
Jednoduché řešení:
- nechám si roli administrátora,
- klient má roli Editor (vizte níže),
- výsledek: oba jsme spokojení a upravujeme, co potřebujeme 🙃
Uživatelské role ve WordPress
Uživatelské role ve WordPress najdete automaticky. Ve výchozím nastavení WP je těchto rolí 6 a mají různá práva:
Subscriber (Návštěvník)
Může spravovat jen svůj profil.
Má práva:
- spravovat vlastní profil
- číst obsah webu
Contributor (Spolupracovník)
Může psát, upravovat i mazat svoje příspěvky, ale nemůže je publikovat.
Má práva:
- jako Subscriber + následující:
- psát, upravovat a mazat svoje příspěvky.
Author (Autor, Redaktor)
Může psát, upravovat i mazat svoje příspěvky a může je i publikovat.
Má práva:
- jako Contributor + následující:
- nahrávat soubory do médií,
- publikovat svoje příspěvky a následně je upravovat.
Editor (Šéfredaktor)
Může psát, upravovat i mazat svoje příspěvky a stejně tak může spravovat i příspěvky ostatních uživatelů.
Má práva:
- jako Author + následující:
- publikovat příspěvky své i ostatních a následně je upravovat.
- číst, upravovat, mazat a mazat:
- soukromé příspěvky,
- příspěvky svoje i ostatních,
- stránky své i ostatních,
- kategorie a štítky,
- komentáře.
Administrator (Administrátor)
Má přístup ke všem možnostem webu a jejich nastavení, včetně úpravy obsahu ostatních uživatelů.
Má práva:
- jako Editor + následující:
- instalovat, upravovat a mazat:
- šablony,
- pluginy,
- aktualizovat jádro WP,
- upravovat dashboard,
- zobrazovat, přidávat, upravovat a mazat uživatele a měnit jim role,
- importovat a exportovat data,
- vytvářet, upravovat a mazat cokoli na webu.
SuperAdmin (SuperAdministrátor)
Existuje pouze v případě Multisite a může spravovat weby v této síti.
Má práva:
- jako Administrator + následující:
- vytvářet, upravovat a měnit síť WP webů a jejich nastavení,
- instalovat, upravovat a mazat:
- šablony v hlavním webu Multisite,
- pluginy v hlavním webu Multisite.
Přidávání dalších rolí
Je samozřejmě možné přidávat do WP webu další role pomocí funkce add_role(), nebo je odebrat pomocí funkce remove_role().
Příklad: Přidání nové role
Kód můžete smazat, jakmile se role vytvoří, protože pak už není potřeba.
// add custom role
function add_custom_roles()
{
add_role(
'example_member', // ID of role
__('Member of example members' section'), // Name visible in administration
array(
'read' => true, // ability to read content
)
);
}
add_action('init', 'add_custom_roles');
Příklad: Smazat roli
Jakmile se role z webu smaže, kód můžete zase odebrat.
function delete_custom_role() {
$role_name = 'example_member';
if (get_role($role_name)) { //check existence
remove_role($role_name);
error_log('Role ' . $role_name . ' was deleted.');
} else {
error_log('Role ' . $role_name . ' does not exists.');
}
}
add_action('init', 'delete_custom_role');
Rozšíření práv stávajících rolí
Přidat další možnosti k roli je možné pomocí funkce add_cap() a odebrat pomocí remove_cap().
- Výčet rolí je možné najít v oficiální dokumentaci WP.
Příklad: Editor může vidět a upravat ostatní uživatele
//editor can see and edit users
function add_editor_manage_users_capability() {
$role = get_role('editor');
$role->add_cap('list_users');
$role->add_cap('edit_users');
$role->add_cap('create_users');
$role->add_cap('delete_users');
$role->add_cap('add_users');
}
add_action('init', 'add_editor_manage_users_capability');
Správa obsahu podle uživatelských rolí
Podle toho, jakou roli uživatel má, mu samozřejmě můžete obrazovat různé části webu, ať už obsahové nebo jiné.
Příklad: DIVI – editor může upravovat šablonu
Příklad: Schovat WP horní lištu pro ne-admin uživatele
//hide bar for non-admin users
function jk_hide_wordpress_admin_bar($hide){
if (!current_user_can('administrator')) {
return false;
}
return $hide;
}
add_filter( 'show_admin_bar','jk_hide_wordpress_admin_bar');
Zdroje:

