Az eddigiekhez képest egy kicsit rendhagyó megoldás lesz a mai, ugyanis ennek a kódnak elég egyszer lefutnia (vagyis a mentés utáni első frissítést követően a változtatások életbe lépnek), így nem is muszáj az mu-plugins mappában hagyni a fájlt. A kódot viszont érdemes lehet továbbra is az mu-plugins mappában lévő fájlba bedobni, mondjuk egy add-user-role.php
fájlba, az alábbi tartalommal:

Saját felhasználói szerepkör létrehozása WordPressben
Az előző #plugout snippetben említettem, hogy érdemes lehet létrehozni saját szerepkört és "képességet" (capability), mondjuk az SVG feltöltéshez WordPress-ben. Erre mutatok most egy megoldást, mégpedig első lépésben a szerepkör létrehozásában.
<?php
/*
Plugin Name: Unicorn Tamer
Plugin URI: https://www.webmenedzser.hu
Description: Add Unicorn Tamer user role
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/
function add_unicorn_tamer() {
$role = 'unicorn_tamer';
$display_name = 'Unicorn Tamer';
$capabilities = array(
'read' => true,
'edit_posts' => true,
'delete_posts' => false,
);
add_role( $role, $display_name, $capabilities );
}
add_action('init', 'add_unicorn_tamer');
Három paramétert használunk: az első a rendszeren belüli nevet adja meg (amivel majd hivatkozhatunk rá a kódban), a második a "szép név", amit az adminisztrációs felületen is látni fogunk, a harmadik pedig egy tömb, ami megadja, hogy melyik képességgel rendelkezik az ezzel a felhasználói szerepkörrel rendelkező felhasználó (vagyis a példában a read
-del és az edit_posts
-tal igen, a delete_posts
-al nem).
Mivel a kódunk nem fut le minden oldalbetöltéskor, a kérdés az, hogy hogyan maradnak meg az adatok? A válasz erre az, hogy az adatbázisban, méghozzá a wp_options
(vagy a megfelelő prefixű) táblának a wp_user_roles
mezőjében (ami szintén a megfelelő prefix-szel értendő). Tehát ha törölni szeretnénk ezeket a szerepköröket, egy másik kódra is szükségünk lesz, ez pedig az alábbi:
<?php
/*
Plugin Name: Unicorn Tamer
Plugin URI: https://www.webmenedzser.hu
Description: Remove Unicorn Tamer user role
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/
function remove_unicorn_tamer() {
remove_role( 'unicorn_tamer' );
}
add_action('init', 'remove_unicorn_tamer');
A snippetet tartalmazó fájl is törölhető a lefutását követően - egyúttal azt is látjuk, hogy mire is volt jó az első kódrészletben a $role
változó. Kész is vagyunk!