Suggerimento rapido permessi utente e plugin

Oggi esamineremo le autorizzazioni degli utenti nell'ambito del tuo plug-in. Nello specifico, discuterò su cosa dovresti usare per determinare chi può vedere i vari menu di amministrazione del tuo plugin.


Una soluzione a un problema di disordine

Mi sono imbattuto nella complessità delle autorizzazioni degli utenti quando si lavora su un'installazione multi-sito di WordPress. Ospitiamo circa 15-20 siti web e abbiamo installato circa 30 plugin. Ogni blog aveva utenti di vari livelli e responsabilità. I miei datori di lavoro avrebbero ricevuto richieste o trovato plugin con funzionalità che volevano offrire e spetterebbe a me installarli e configurarli. Questo è quando mi sono imbattuto in problemi. Spesso, mi sono ritrovato a modificare i plug-in per adattarli semplicemente ai ruoli utente che stavamo usando. Il caos era dovuto in gran parte ai diversi modi in cui WordPress ti consente di definire chi può visualizzare e utilizzare il tuo plugin.

C'era una volta WordPress incorporato "User Levels". C'erano 10 livelli, ognuno dei quali concedeva più privilegi all'utente rispetto all'ultimo. Quindi, molto spesso, lo sviluppatore avrebbe come target un livello utente specifico in questo modo:

 

Per quelli di voi che non hanno familiarità con le funzioni di WordPress, la funzione add_menu_page è definita come:

 add_menu_page (я $ page_title, я $ menu_title, я $ capacità, я $ menu_slug, я $ funzione, я $ icon_url, я $ positionя);

Questo particolare set di codice ha come target il livello utente 10, che sarebbe il set di autorizzazioni più alto. Anche se utile in alcune circostanze, i livelli utente non hanno dato tutta la flessibilità che mi piaceva. Fortunatamente, quando è stato rilasciato WordPress 2.0, ci è stato assegnato "Ruoli e funzionalità". Le funzionalità hanno sostituito i livelli utente e in WordPress 3.0, i livelli utente sono diventati obsoleti.

Con il nuovo modo di definire le autorizzazioni degli utenti, abbiamo acquisito ulteriori modalità di targeting degli utenti. Il primo è dai ruoli stessi. Utilizzando le stesse funzioni di cui sopra, illustrerò il targeting di un utente per ruolo.

 

In sostanza, questo non è molto diverso dall'uso dei Livelli utente e, nella mia situazione, non era una buona cosa. Con la nostra configurazione multi-sito, i ruoli di amministratore sono stati utilizzati solo da persone in casa. Il ruolo più alto in cui i clienti erano ammessi erano gli editori. Ma avevano ancora bisogno di essere in grado di fare certe cose all'interno del loro sito. E sfortunatamente, molti plug-in che ho trovato utilizzano ancora i livelli utente oi ruoli stessi per concedere o negare l'uso del proprio plug-in. Tuttavia, WordPress ha fornito una soluzione molto più robusta a questo problema in termini di funzionalità.

Le funzionalità ti consentono di indirizzare un utente in base a ciò che sono in grado di fare piuttosto che al ruolo che detengono. Considera l'esempio qui sotto.

 

Le funzioni ora verificano se un utente può upload_files o meno. Se le funzionalità non sono state modificate, ciò consente al menu di essere visibile e al codice da eseguire per Super amministratori, amministratori, editori e autori. Questa è una soluzione molto migliore, poiché le funzionalità individuali possono essere aggiunte o rimosse dai ruoli nelle funzioni del tema.

Ora, mentre questa è la soluzione migliore per molte circostanze, mi piace fare un ulteriore passo avanti. Quando sviluppo un plug-in per funzioni non amministrative, come una galleria o un plug-in di testimonianze, preferisco concedere l'accesso utente in base a una capacità personalizzata creata per il plug-in. Ho fornito un esempio su come farlo in seguito.

 

Come puoi vedere, stiamo aggiungendo una funzionalità chiamata "my_plugin_cap" al ruolo di editor. Quindi aggiungiamo una pagina di menu che è visibile a tutti gli utenti con questa capacità. Ciò che è bello è che nel plug-in, è possibile aggiungere la funzionalità agli utenti appropriati e, se l'amministratore desidera concedere ad altri ruoli l'accesso, può farlo aggiungendo la funzionalità attraverso le funzioni del tema. Nel mio caso, ciò significa che non ho più bisogno di modificare i plugin stessi e posso sentirmi libero di aggiornarli senza preoccuparmi di perdere le modifiche apportate.

Spero che questo suggerimento ti sia stato utile. Fatemi sapere se avete domande o dubbi nei commenti qui sotto. Buona programmazione dei plugin!