Saját felhasználói szerepkör létrehozása WordPressben előnézeti képe

Saját felhasználói szerepkör létrehozása WordPressben

| Olvasási idő: 1 perc

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.

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:

php
<?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
<?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!