Egyedi képesség hozzáadása WordPressben előnézeti képe

Egyedi képesség hozzáadása WordPressben

| Olvasási idő: 1 perc

Folytatva a megkezdett témát: ha az egyedi szerepköröd mellé egyedi képességekre is szükséged lesz, azokat is hozzá tudod adni pluginek nélkül - nézzünk most erre egy példát!

A szerepkörhöz hasonlóan a képességek is marandóan "hozzáadódnak" az adott szerepkörhöz. Így nem muszáj folyamatosan bekapcsolva lennie a snippetnek, elég, ha csak egyszer lefut (vagyis utána a fájlt törölheted). Az egyszerűség kedvéért - mivel valójában szorosan összetartoznak - a múltkori példát fejlesztjük tovább: 

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_unicorn_tamer_capabilities();
}

function add_unicorn_tamer_capabilities() {
    $role = get_role( 'unicorn_tamer' );
    $role->add_cap( 'tame_a_unicorn' );
}

add_action('init', 'add_unicorn_tamer');

A kód elég könnyen érthető: a unicorn_tamer szerepkörhöz hozzáadjuk a tame_a_unicorn képességet. Ettől kezdve használhatjuk akár a sablonunkban (ahogyan az egyedi single.php-val kapcsolatos snippetben mutattam), akár a többi snippetben (például az SVG feltöltés esetében) is, méghozzá a következőképpen: 

php
<?php 

    ...

    if ( current_user_can( 'tame_a_unicorn' ) ) {
        ...
    }

    ...
}

?> 

Ha már nem lesz szükséged a képességre, akkor azt el is tudod távolítani, méghozzá az alábbi snippettel: 

php
<?php 
/*
Plugin Name: Unicorn Tamer
Plugin URI: https://www.webmenedzser.hu
Description: Remove Unicorn Tamer capability
Version: 1.0
Author: Radics Ottó
Author URI: https://www.webmenedzser.hu
License: GPL2
*/

function remove_unicorn_tamer_tame_a_unicorn() {
    $role = get_role( 'unicorn_tamer' );
    $role->remove_cap( 'tame_a_unicorn' );
}
add_action('init', 'remove_unicorn_tamer_tame_a_unicorn');

Remélem, hogy ezek a snippetek is hasznosak voltak - ha bármilyen kérdés/kérés felmerült benned, vedd fel velem a kapcsolatot