Dove sono definiti i Ruoli disponibili nel database wp_?
Mi sono iscritto alla lista per testare una versione beta privata di un plugin che sto utilizzando su una rete multisite.
Gli autori del plugin hanno inserito del codice per aggiungere un ruolo personalizzato. Hanno un bug che rimuove la possibilità di assegnare a un utente qualsiasi ruolo eccetto il loro ruolo personalizzato.
Quando visito ../wp-admin/network/site-users.php
, i menu a tendina "Aggiungi Utente" mostrano solo il ruolo aggiunto da questo plugin. Il menu a tendina per modificare il ruolo mostra tutti i ruoli predefiniti di WP, più alcuni ruoli extra aggiunti da questo e altri plugin. Se provo a cambiare un utente a uno di questi ruoli, ottengo una pagina di errore "Non puoi assegnare agli utenti quel ruolo".
Ne ho discusso con lo sviluppatore, e sembrano perplessi.
Ho cercato nel mio database e nel codex, ma non riesco a trovare dove sono definiti i ruoli validi.

Tieni presente che option_name
potrebbe contenere il prefisso del tuo database invece di wp_
. Questo era il caso per il mio database.

Potrebbe anche avere un ID blog se sei su multisite, ad esempio "wp_37_user_roles".

I ruoli degli utenti sono memorizzati nella tabella wp_user_meta
Per verificare i ruoli degli utenti, per prima cosa, controlla l'ID dell'utente nella tabella wp_users
(Nome colonna ID)
Ora vai alla tabella wp_usermeta
e cerca dove la colonna user_id
è uguale all'ID che corrisponde all'ID
della tabella wp_users
.
Otterrai un elenco di righe con i metadati dell'utente selezionato, la riga con meta_key
come wp_capabilities
definisce il ruolo dell'utente.
Il valore di wp_capabilities
per
- Amministratore :
a:1:{s:13:"administrator";b:1;}
- Cliente WooCommerce :
a:1:{s:8:"customer";b:1;}

La tua risposta riguarda l'assegnazione di un ruolo a un utente. L'OP stava chiedendo riguardo alle definizioni dei ruoli stessi, che sono archiviate in wp_options.

che a:1:{s:13:"administrator";b:1;} sia una sorta di stringa disordinata, cosa sono tutti quei numeri intorno alla parte importante?

@Johnny Rockex Si tratta di dati serializzati, un modo per memorizzare più di un valore in una cella del database... spesso non molto apprezzato, in quanto può rendere le cose più difficili. La "s" sta per "stringa" (di 13 caratteri), la "b" per Booleano - Cerca Data Serialisation in MySQL su Google per i dettagli.

@mayersdesign Posso capire le espressioni perplesse, il mio istinto sarebbe quello di ristrutturare le tabelle per avere valori singoli in ogni campo, ma chissà, funziona.
