• Home
  • Corsi

    Informazioni sui corsi

    • Tutti i corsi
    • Diventa un insegnante
    • Profilo insegnante
    Fondamenti di programmazione: le basi del linguaggio C++

    Fondamenti di programmazione: le basi del linguaggio C++

    €29.99 €9.99
    Read More
    D4F Games
  • Develop4fun
    • Chi siamo
    • Portfolio
    • Eventi
    • Galleria
    • Negozio
    • FAQ
  • Articoli
  • Contattaci
  • Accedi

Cerca

Hai qualche domanda?
contact@develop4fun.com
Develop4fun
  • Home
  • Corsi

    Informazioni sui corsi

    • Tutti i corsi
    • Diventa un insegnante
    • Profilo insegnante
    Fondamenti di programmazione: le basi del linguaggio C++

    Fondamenti di programmazione: le basi del linguaggio C++

    €29.99 €9.99
    Read More
    D4F Games
  • Develop4fun
    • Chi siamo
    • Portfolio
    • Eventi
    • Galleria
    • Negozio
    • FAQ
  • Articoli
  • Contattaci
  • Accedi
    • Categorie

      • Backend
        • PHP e MySQL
      • C#
      • C++
      • CMS
      • CSS
      • Frontend
        • CSS
        • Html
        • Javascript
      • Html
      • Javascript
      • Javascript
      • Linguaggio di programmazione
        • C#
        • C++
        • Javascript
        • Lua
      • LOVE2D
      • Lua
      • Phaser 3
      • PHP e MySQL
      • RayLib
      • Sviluppo
        • Linguaggio di programmazione
          • C#
          • C++
          • Javascript
          • Lua
        • Videogiochi
          • LOVE2D
          • Phaser 3
          • RayLib
          • Unity3D
          • Unreal Engine
        • Web
          • Backend
            • PHP e MySQL
          • CMS
          • Frontend
            • CSS
            • Html
            • Javascript
      • Unity3D
      • Unreal Engine
      • Videogiochi
        • LOVE2D
        • Phaser 3
        • RayLib
        • Unity3D
        • Unreal Engine
      • Web
        • Backend
          • PHP e MySQL
        • CMS
        • Frontend
          • CSS
          • Html
          • Javascript

Linguaggi di Programmazione

Home » Articoli » Ottenere il ruolo di un utente WordPress

Ottenere il ruolo di un utente WordPress

  • Pubblicato da Antonella De Chiara
  • Categorie Linguaggi di Programmazione, PHP, Tutorial WordPress, Web, Wordpress
  • Data 31 Gennaio 2017
  • Commenti 0 commenti
WordPress
(Ultimo aggiornamento: 31 Gennaio 2017)

Un utente WordPress è sempre associato ad un ruolo (Sottoscrittore, Collaboratore, Autore, Editore, Amministratore) al quale sono associate delle capacità (pubblicare contenuti, modificare i parametri di configurazione, ecc). Infatti il CMS è dotato di un sistema di gestione utenti integrato, che consente di aggiungere altre “figure lavorative” oltre a quella di amministratore.

Se desiderate visualizzare sul vostro sito il ruolo di un utente, saranno necessarie un paio di righe di codice.

Per ottenere il ruolo dell’utente connesso, bisognerà inserire alcune linee che permetteranno di visualizzare le sue informazioni. Si potrebbe anche creare una funzione PHP se si prevede di riutilizzare il codice più volte.

Il codice fa l’azione seguente: recupera l’ID dell’utente per ottenere i suoi dati personali, compreso il ruolo. La funzione echo consente la visualizzazione del nome dell’utente e il ruolo WordPress.

 <?php 
      $user_id = get_current_user_id(); 
      $user_info = get_userdata($user_id);

      if($user_info) {
            echo 'Username: '.$user_info->user_login.'<br />';
            echo 'User roles: '.implode(', ', $user_info->roles).'<br />';
            // Attenzione : $user_info->roles restituisce un array
      }
?>

 

Siete liberi di adattare questo codice per ottenere le altre informazioni dell’utente desiderato. Ad esempio :

 <?php 
      $user_info = get_userdata(1);
      $username = $user_info->user_login;
      $first_name = $user_info->first_name;
      $last_name = $user_info->last_name;
      echo "$first_name $last_name logs into her WordPress site with the user name of $username.";
?>

 

Potrete trovare la funzione utilizzata per ottenere queste informazioni nel file wp-includes/pluggable.php :

function get_userdata( $user_id ) {
    return get_user_by( 'id', $user_id );
}

 

Qui troverete la documentazione ufficiale del codice sorgente di WordPress.

 

Come creare la una pagina Capability

Adesso dovrebbe essere ormai chiaro che un ruolo non è altro che un insieme di capability.

Una capability non è altro che quello che può fare un utente all’interno di WordPress. Vogliamo dargli soltanto la possibilità di leggere (come accade per gli utenti Subscriber)? Allora l’unica capability che dovremmo assegnarli è read. Desideriamo che un utente in particolare sia anche in grado di installare e disinstallare temi? Allora dovremmo assegnarli le capability install_themes ed edit_themes.

Ovviamente potremo andare avanti in questo modo a lungo e potremo parlare infinitamente di tutte le variabili. Per rimanere sulla tematica dell’articolo, se ciò vi interessa vi lasciamo consultare l’ottima sezione relativa a questo argomento presente all’interno del Codex WordPress.

Adesso che dovrebbe essere chiaro che cosa permettono di impostare le capability, entriamo nella parte divertente dell’articolo ed andiamo a scoprire com’è possibile aggiungere (e creare allo stesso tempo) una per un determinato ruolo o per un determinato utente.

 <?php
//Per Ruolo
function aggiungi_capability() {
    // prendo il ruolo author
    $ruolo = get_role( 'author' );
    //Aggiungo la mia Capability
    $role->add_cap( 'aggiungi_prodotto' ); 
}
add_action( 'admin_init', 'aggiungi_capability');
//Per Utente
$user = new WP_User( $user_id );
$user->add_cap( 'can_edit_posts');

Come potete sicuramente notare, le pratiche per aggiungere una capability differiscono leggermente quando vogliamo farlo su un ruolo oppure su un singolo utente . Se nel primo caso abbiamo bisogno di un Action Hook (precisamente di admin_init) che ci permetta di richiamare il ruolo author, nel secondo l’unica cosa di cui abbiamo bisogno è conoscere l’ID dell’utente per il quale desideriamo aggiungere una capability.

Dal codice si può anche notare quanto sia semplice creare una capability personalizzata, infatti, tutto quello che dovrete fare è scrivere la capability che vogliamo creare (che nel codice sarebbe aggiungi_prodotto) ed il gioco è fatto; d’ora in avanti il ruolo author porterà con se questa impostazione.

 

Passiamo ai Ruoli

Come abbiamo già visto, un ruolo è un insieme di capability che permettono all’utente di accedere a determinate impostazioni o di eseguire particolari azioni che sono state definite dal plugin.

Per rendere il tutto più semplice facciamo un esempio concreto. Molto probabilmente conoscete già il plugin WooCommerce che permette di creare in pochi click il vostro eCommerce; questo non fa altro che aggiungere dei Custom Post Type e crea allo stesso tempo dei ruoli e capability dedicate alla gestione dei negozi.

Appena installato, il ruolo creato prende il nome di Shop Manager e come possiamo aspettarci permetterà all’utente con questo ruolo di gestire il proprio negozio. Per fare questo, WooCommerce crea anche delle capability e giusto per dare qualche esempio queste sono: edit_product, delete_shop_coupon_terms oppure read_shop_order.

 <?php 
//Crea un Ruolo Personalizzato 
$aggiungi_ruolo = add_role(     
   'shop_manager',    
    __( 'Shop Manager' ),     
   array(         
      'edit_product'         => true,  // true ci attiva la capability         
      'delete_shop_coupon_terms'   => true,         
      'read_shop_order' => false, // false la disattiva     
   ) 
);

Questa è una versione molto semplificata del codice utilizzato da WooCommerce durante la sua installazione. Come ormai ci ha abituato WordPress i parametri accettati dalla funzione add_role() sono molto semplici:

  • il primo elemento rappresenta lo slug (o abbreviazione per noi italiani) e ci permette di creare un nome umano per richiamare successivamente il ruolo creato;
  • in seguito abbiamo la possibilità di inserire una stringa di testo che identificherà il nome che l’utente potrà leggere all’interno del proprio backend;
  • ultimo, ma non per importanza, troviamo la lista di capability da assegnare al ruolo che stiamo creando.

Ecco come potrete creare dei ruoli personalizzati da utilizzare all’interno dei vostri plugin, prima di andare a vedere come sia possibile controllare se un utente ha o meno un determinato ruolo o capability, cerchiamo di capire come assegnarlo a un utente esistente all’interno della propria installazione WordPress.

Per fare questo bisogna usare la funzione wp_update_user() che si può usare nel metodo seguente (se bisogno, non esitate a consultare il Codex WordPress):

 <?php 
//Aggiungi un Ruolo ad un Utente $user_id = 3; 
$ruolo = 'shop_manager'; 
$user_id = wp_update_user( array( 'ID' => $user_id, 'role' => $ruolo ) );

E questo per quando vogliamo assegnare un ruolo ad un utente già esistente, ma se si desidera assegnare un ruolo particolare durante la creazione di un utente potrete procedere in due modi diversi:

  1. il primo, e più semplice, è quello di creare il nuovo utente utilizzando le funzionalità interne del nostro backend, ma è poco pratica quando stiamo lavorando con il codice…
  2. per questo potete assegnare il ruolo con il vostro codice PHP usando la funzione `wp_insert_user()` e specificando il ruolo durante la sua creazione.

Ancora una volta vi lasciamo approfondire gli argomenti consultando la pagina del Codex creata appositamente.

Ruoli e Capability

Siamo quasi alla fine di questo articolo, ma dopo tutto quello che abbiamo visto, ci sembra più che necessario spiegare come sia possibile controllare che l’utente che sta cercando di eseguire una determinata operazione abbia le competenze per farlo.

Anche perché, altrimenti, non ci sarebbe stato il motivo di creare ruoli e capability.

Diciamo quindi che vogliamo controllare che l’utente che al momento è loggato può modificare gli articoli di altre persone, come fare? Ecco un piccolo ma utilissimo codice che presenta la funzione current_user_can():

 <?php 
//Controlla la capability di un utente loggato 
if( current_user_can('edit_others_posts') ){     
   echo "Puoi modificare gli articoli degli altri"; 
}

Questo codice è incredibilmente utile se vogliamo scoprire, o limitare, che cosa è in grado di fare un determinato utente e riprendendo i discorsi iniziali sulla sicurezza, ci permette anche di limitare i danni che gli utenti meno esperti possono fare al nostro WordPress.

Ma come fare per creare un codice che permette di controllare le capability di un utente che non è loggato? Si può utilizzare questo semplice codice:

 <?php 
//Controlla un dato utente 
if ( user_can( 6, 'edit_others_posts' ) ) {   
   // Fai qualcosa 
}

Ovvero bisogna usare la funzione user_can() e passare come primo parametro l’ID dell’utente stesso e come secondo la capability che si vuole controllare.

Infine, ecco la pagina del Codex dove questa funzione è spiegata per bene.


Visualizzazioni post: 407

Tag:Action Hook, Articolo WordPress, capability, Child Theme, CMS, current_user_can, Custom Post Type, functions.php, get_userdata, Programmatore, ruolo utente, sicurezza wordpress, slug, user_can, wp_insert_user, wp_update_user

  • Share:

INFORMAZIONI SULL'AUTORE

Antonella De Chiara
Antonella De Chiara

Appassionata di giochi di ruolo giapponesi, genere che ha scoperto grazie alla saga Final Fantasy e approfondito con i capolavori usciti negli ultimi anni, s’interessa al retrogaming, rigiocando e programmando vecchie glorie come Monkey Island, Prince of Persia o vecchi capolavori marchiati Nintendo.
Antonella comincia il suo percorso giornalistico in Italia, lavorando con Gamerepublic, PS Mania e Pokémon Mania. Si trasferisce in Francia per studiare la programmazione web e gamedev: grazie a questo percorso anomalo nasce Develop4fun.

Articolo precedente

Rimuovere il prefisso dei titoli degli archivi su WordPress (categorie, tag, autore, ecc)
31 Gennaio 2017

Articolo successivo

Marialand in action
3 Agosto 2017

Ti potrebbe anche piacere

Money Game
Sviluppare Videogiochi: come fare un’indagine sul mercato
9 Settembre, 2021
Programmazione
5 regole base per iniziare qualsiasi progetto videoludico
20 Luglio, 2021
Gamedev
Creazione di videogiochi: una lista di siti web per gli assets
8 Luglio, 2021

Lascia un commento Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Cerca

Impara a programmare videogiochi web con Phaser 3

Impara a programmare videogiochi web con Phaser 3

€49.99 €9.99
HTML e CSS: Corso di programmazione per principianti

HTML e CSS: Corso di programmazione per principianti

€69.99 €9.99
[Lua & LOVE2D] Introduzione alla programmazione dei videogiochi

[Lua & LOVE2D] Introduzione alla programmazione dei videogiochi

€49.99 €9.99
D4F Games

Ultimi articoli pubblicati

unity3d
Chi sono gli sviluppatori nel mondo dei videogiochi?
22Nov2021
[Unreal Engine] Un nuovo fantastico asset GRATUITO!
[Unreal Engine] Slay, un nuovo fantastico asset GRATUITO!
22Set2021
Steam
Come pubblicare un videogioco su Steam?
21Set2021

© Develop4fun.it by Develop4fun  2016-2022. Tutti i diritti riservati.

Gestisci Consenso Cookie
Usiamo cookie per ottimizzare il nostro sito web ed i nostri servizi.
Funzionale Sempre attivo
L'archiviazione tecnica o l'accesso sono strettamente necessari al fine legittimo di consentire l'uso di un servizio specifico esplicitamente richiesto dall'abbonato o dall'utente, o al solo scopo di effettuare la trasmissione di una comunicazione su una rete di comunicazione elettronica.
Preferenze
L'archiviazione tecnica o l'accesso sono necessari per lo scopo legittimo di memorizzare le preferenze che non sono richieste dall'abbonato o dall'utente.
Statistiche
L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici. L'archiviazione tecnica o l'accesso che viene utilizzato esclusivamente per scopi statistici anonimi. Senza un mandato di comparizione, una conformità volontaria da parte del vostro Fornitore di Servizi Internet, o ulteriori registrazioni da parte di terzi, le informazioni memorizzate o recuperate per questo scopo da sole non possono di solito essere utilizzate per l'identificazione.
Marketing
L'archiviazione tecnica o l'accesso sono necessari per creare profili di utenti per inviare pubblicità, o per tracciare l'utente su un sito web o su diversi siti web per scopi di marketing simili.
Gestisci opzioni Gestisci servizi Gestisci fornitori Per saperne di più su questi scopi
Preferenze
{title} {title} {title}