Modifica ruolo utente dopo di importazione di massa
-
16-10-2019 - |
Domanda
dopo l'importazione di successo del ~ 4000 utenti e dei loro blog e messaggi di Liftype Ho un problema di diritti: tutti gli utenti sono solo abbonati nel proprio blog. Come posso massa modificarlo per blog (non tutto il sito!) I privilegi di amministratore? Tutte le funzioni note che ho trovato nel Codex conferisce diritti di amministratore per il blog principale, che non è quello che voglio.
Grazie Uwe
Modifica: Che cosa c'è che non va qui?
include 'wp-load.php';
global $wpdb;
for ( $blog_id = 393; $blog_id <=4091; $blog_id++ ){
$bloguser= get_users_of_blog ($blog_id);
foreach ($bloguser as $usr) { // maybe there is more than one
$user_id = $usr->ID;
echo 'Blog No. '.$blog_id.' is property of user: '.$user_id; //control check
if ($user_id != '') {
$user = new WP_User($user_id);
$user->for_blog($blog_id);
$user->remove_role('editor');
$user->add_role('administrator');
}
}
}
echo 'Done!';
Il codice è ben funzionante, ma non v'è alcun cambiamento per il ruolo dell'utente.
Modifica: codice errore di battitura a cura, nessun cambiamento ai risultati
@EAMann Sei sicuro, add_role è la funzione giusta? Capisco che questo è per l'aggiunta di un nuovo ruolo al sistema di WP.
Modifica: Aggiornato nuovamente il codice. Utilizzando update_user_meta. $ Controllo restituisce 'amministratore' (a destra!), Ma se chiamo le proprietà del blog dell'utente, l'utente è sempre 'editore'.
Soluzione
Dalla tua domanda, sto assumendo questi sono gli utenti di un blog specifico all'interno di un'installazione MultiSite, giusto? In tal caso, procedere come segue:
- Vai al blog per il quale si vuole fare in questi amministratori degli utenti.
- Fare clic sul pulsante "Utenti" nella barra laterale di amministrazione lato sinistro
- Questo vi presenterà con un display di circa 20 utenti alla volta (il display è paging)
- Fare clic sulla casella di controllo accanto agli utenti che si desidera promuovere
- In cima alla lista è una casella a discesa che dice "Modifica ruolo da ..." - Selezionare "Amministratore" da questa casella di selezione
- Fare clic sul pulsante "Modifica" a destra della casella di selezione
Dovrete fare questo per ogni pagina degli utenti, e con 4000 utenti avrete circa 160 pagine di risultati. Ma è fattibile.
Aggiorna
Se volete qualche codice specifico, vi consiglio di guardare il WP_User
classe. Questa classe definisce due metodi che avresti bisogno di utilizzare in modo iterativo:. for_blog()
e add_role()
In sostanza, avrete bisogno di un ciclo tra i tuoi utenti in base sia su loro ID o nomi utente. Considerate questo non testati esempio di codice:
$ids = [1,2,3,4];
foreach($ids as $id) {
$user = new WP_User($id);
$user->for_blog( ... user's blog id ... );
$user->remove_role('subscriber');
$user->add_role('administrator');
}
Per impostazione predefinita, il metodo add_role()
della classe WP_User
agirà sul blog corrente ... si utilizza for_blog()
di passare a un blog specifico prima di eseguire il metodo add_role()
.
Quindi, se avete gli ID dei vostri utenti e gli ID dei blog che si suppone di essere amministratori per, è possibile scorrere di loro abbastanza facilmente e configurarli come amministratori per i loro siti specifici.