Qual è il significato del campo wp_capabilities nella tabella wp_usermeta
Sono nuovo in WordPress, nella tabella wp_usermeta
ho notato che abbiamo una riga
meta_key meta_value
wp_capabilities a:1:{s:13:"administrator";b:1;}
Prima di tutto, qual è il significato di meta_value a:1:{s:13:"administrator";b:1;}
, dove posso trovare la spiegazione esatta di questo campo? Vorrei conoscere tutto sui ruoli
, utenti
e Capabilities
, dove posso trovare queste informazioni.
Secondo, come posso creare nuovi ruoli tramite le API di WordPress
via codice
Grazie in anticipo.

Il wp_capabilities salva il valore come array serializzato, puoi provarlo nel tuo PHP o per questo esempio qui: http://blog.tanist.co.uk/files/unserialize/.
Il Codice:
a:1:{s:13:"administrator";b:1;}
È:
Array
(
[administrator] => 1
)
Significa che l'utente è un amministratore.
Puoi aggiungere nuovi ruoli al database eseguendo la funzione add_role, e eseguila solo una volta!

Per essere chiari, puoi deserializzare l'array usando la funzione PHP unserialize
, e il risultato in questo caso è array('administrator' => true)
in formato var_export
.

Oltre alla risposta di @Krysiek, dovresti sapere che i dati memorizzati nelle tabelle meta, inclusi i metadati degli utenti, sono spesso serializzati. Se vuoi sapere cosa rappresentano effettivamente i dati, puoi utilizzare la funzione PHP unserialize per determinarne il valore. Ad esempio, passando il valore a:1:{s:13:"administrator";b:1;}
attraverso unserialize (e poi visualizzando i risultati con var_dump) otterrai questo:
array(1) {
["administrator"]=>
bool(true)
}
Troverai lo stesso tipo di voci anche nella tabella options
e nella tabella post_meta
.
Tuttavia, dovresti evitare di scrivere direttamente in queste tabelle. Ci sono funzioni di WordPress che ti permettono di memorizzare e accedere ai dati degli utenti. Ad esempio, per leggere i dati dalla tabella user meta, dovresti usare get_user_meta e per scrivere dovresti usare la funzione WordPress update_user_meta. Funzioni simili esistono per le tabelle post_meta e options.

meta_value
è la colonna per memorizzare il valore del campo meta. Ogni meta_field contiene una chiave e un valore.
Penso che questo articolo del Codex sui ruoli e le capacità possa aiutarti: http://codex.wordpress.org/Roles_and_Capabilities
Per aggiungere ruoli personalizzati dovresti usare la funzione add_role
(http://codex.wordpress.org/Function_Reference/add_role)
Ed ecco un esempio di utilizzo tratto dal Codex:
$result = add_role('basic_contributor', 'Collaboratore Base', array(
'read' => true, // true permette questa capacità
'edit_posts' => true,
'delete_posts' => false, // Usa false per negare esplicitamente
));
if (null !== $result) {
echo 'Evviva! Nuovo ruolo creato!';
} else {
echo 'Oh... il ruolo basic_contributor esiste già.';
}

La chiave "wp_capabilities" nella tabella wp_usermeta identifica la rappresentazione serializzata di un array che definisce i ruoli di un utente e tutte le capacità aggiunte a quell'utente con $user->add_cap('mia_capacità');
. Grazie spaul!
Il team di WordPress ha chiamato il campo [prefix]_capabilities prima di rendersi conto che le "capabilities" erano in realtà elementi raggruppati per utenti che ricoprono un determinato ruolo. Cambiare il valore della chiave da [prefix]_capabilities a [prefix]_roles interromperebbe troppi plugin di terze parti e richiederebbe un enorme refactoring in WordPress stesso.
Per questo motivo, è sicuro affermare che la chiave usermeta wp_capabilities contiene i ruoli degli utenti e sarebbe stata chiamata wp_roles se non ci fossero già così tanti software utili che si aspettano che utilizzi il vecchio nome.
Poiché questo fatto è così utile per i nuovi appassionati di WordPress, consiglio a chiunque abbia qualcosa da dire sui Ruoli (o capacità) di WordPress di essere molto chiaro sul fatto che i ruoli degli utenti sono elencati in un array serializzato nella tabella usermeta sotto la chiave [prefix]_capabilities.

Non è vero. Puoi facilmente assegnare capacità personalizzate a utenti specifici chiamando $user->add_cap('my_capability');
e la voce sarà quindi letta come a:2:{s:13:"administrator";b:1;s:13:"my_capability";b:1;}
. Il ruolo di amministratore così come altri utenti amministratori sul sito non avranno questa capacità.

Nella tabella wp_usermeta
possiamo salvare le informazioni aggiuntive relative a un utente durante la creazione di un nuovo utente o l'aggiornamento del profilo di un utente esistente.
Nella tabella wp_usermeta
c'è una colonna chiamata meta_key
dove possiamo salvare il valore attraverso il quale possiamo ottenere
o aggiornare
il valore di quel campo, ad esempio:
add_user_meta( 'user_id', 'meta_key', 'meta_value')
utilizzando questa funzione possiamo aggiungere il valore meta nella tabella conmeta_key='meta_key'
.get_user_meta('user_id', 'meta_key', true)
utilizzando questa funzione possiamo ottenere il valore dell'utente conmeta_key = 'meta_key'
.update_user_meta( 'user_id, 'meta_key', 'meta_value')
utilizzando questa funzione possiamo aggiornare il valore meta.delete_user_meta( 'user_id', 'meta_key')
utilizzando questa funzione possiamo eliminare il valore meta dell'utente.Se vuoi salvare il campo
Secondo nome
per gli utenti, salvalo inwp_usermeta
conmeta_key=middle_name
e salva il suo valore inmeta_value=valore
utilizzando queste funzioni.
Il ruolo è come una politica di accesso assegnata a un utente, che determina quanto accesso ha nel sito web. Puoi aggiungere o rimuovere un ruolo.
Le capacità sono come l'aggiunta di funzionalità o la restrizione di un ruolo. Ad esempio, ci sono due ruoli 'gold-role', 'platinum-role'. Possiamo limitare 'gold-role' in modo che possa solo aggiungere post ma non pubblicarli, mentre a 'platinum-role' aggiungiamo la funzionalità di poter pubblicare un post. Possiamo anche aggiungere o rimuovere capacità relative a un ruolo. Puoi anche aggiungere restrizioni sulle metabox dei post.
Per maggiori informazioni segui Ruoli e Capacità
Puoi aggiungere un ruolo e impostarne le capacità tramite l'API di WordPress oppure puoi usare plugin per farlo. Secondo me Advanced Access Manager è il miglior plugin per la gestione di Ruoli e Capacità.
