Qual è il significato del campo wp_capabilities nella tabella wp_usermeta

19 giu 2013, 16:07:14
Visualizzazioni: 35.9K
Voti: 11

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.

0
Tutte le risposte alla domanda 5
1
10

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!

19 giu 2013 16:31:55
Commenti

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.

Flimm Flimm
18 ott 2017 14:27:36
0

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.

19 giu 2013 16:36:58
0

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à.';
}
19 giu 2013 16:14:34
1

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.

16 gen 2016 04:43:44
Commenti

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à.

sPaul sPaul
17 gen 2018 18:11:27
0

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:

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à.

19 giu 2013 16:52:40