- Home
- Categorie
- Coding e Sistemistica
- WordPress
- Come nascondo l'admin agli altri utenti?
-
Come nascondo l'admin agli altri utenti?
Sono l'amministratore del sito che ho creato e altri due sono Editori ed essi dovrebbero poter gestire gli utenti che si registrano. Il problema sta nel fatto che in questo modo loro possono cancellare il mio utente o assegnare diritti a chi vogliono (per sè, cambiare i miei, creare altri admin)...
Premesso che non vorrei utilizzare plugin, conoscete una qualche funzione da mettere nel file functions.php che nasconda il mio utente agli altri utenti? E/o che non consenta modifiche ai ruoli da un certo livello in su?
(non so se serve, ma il mio admin non è più quello con id=1)Grazie mille...
-
Ciao hermod.
L'utente di tipo *Editor *in WordPress gestisce i contenuti ma non può cancellare gli utenti.Francesco
-
@FDA said:
Ciao hermod.
L'utente di tipo *Editor *in WordPress gestisce i contenuti ma non può cancellare gli utenti.Ti devo contraddire...
Ho appena creato un Editor di test tramite il mio account (Amministratore) e l'ho cancellato tramite un altro utente Editor che era già presente.
-
Ciao hermod.
Non so quale operazione tu faccia, con quale plugin opzionale e con quale utente. Mi riferisco alla documentazione di WordPress: codex.wordpress.org/Roles_and_CapabilitiesPer maggiore sicurezza verificherò con una demo vergine.
Francesco
-
Prova così:
/** Hide Administrator From User List **/
function isa_pre_user_query($user_search) {
$user = wp_get_current_user();
if (!current_user_can('administrator')) { // Is Not Administrator - Remove Administrator
global $wpdb;$user_search->query_where = str_replace('WHERE 1=1', "WHERE 1=1 AND {$wpdb->users}.ID IN ( SELECT {$wpdb->usermeta}.user_id FROM $wpdb->usermeta WHERE {$wpdb->usermeta}.meta_key = '{$wpdb->prefix}capabilities' AND {$wpdb->usermeta}.meta_value NOT LIKE '%administrator%')", $user_search->query_where );
}
}
add_action('pre_user_query','isa_pre_user_query');
-
@mcrapanzano said:
Prova così:
/** Hide Administrator From User List **/
.........Ciao, sto provando... e pare che funzioni!!
Una domanda in più: Sai se è possibile fare anche in modo che l'utente non-admin possa non avere anche il modo di modificare o creare un utente assegnandogli il ruolo di Amministratore?
Perchè, ci stavo pensando ora, è vero che non vede l'admin, ma è anche vero che, in condizioni norali, può crearne uno (o modificare il ruolo di un altroin admin) ...
-
Sì, basta cambiare le capabilities. Aspetta che ti cerco la funzione.
-
Anzi, invece di sporcare il codice per gestire le capabilities, prova questo plugin: Capability Manager Enhanced
gestisce le regole per ogni tipologia di utente.
-
@mcrapanzano said:
Anzi, invece di sporcare il codice per gestire le capabilities, prova questo plugin: Capability Manager Enhanced
gestisce le regole per ogni tipologia di utente.
Io ho già un plugin per gestire i Ruoli, si chiama "WPFront User Role Editor" ed ho già modificato alcune cose... Farò casino sul Db ad installare anche quello che mi proponi tu? (che fra l'altro, in effetti, leggo nella sua descrizione che dovrebbe farmi gestire questa cosa).
Sennò benvenga un pezzetto di codice... tanto sto usando un child theme... e il mio functions.php è nel child, al sicuro da riscritture con gli aggiornamenti..
-
Non ti preoccupare non incasini il db con i plugin sono fatti per lavorare assieme.
nella peggiore delle ipotesi lo disinstalli.
invece se vai a sporcare il codice, devi tenere traccia delle modifiche e un domani ricordarti cosa hai fatto o rischi incompatibilità con nuove versioni di wp.
ti consiglio di fare una prova con il plugin ;). Se poi non funziona, ti mando due righe
-
Ti riconsiglio di usare il plugin, ma nel caso ti lascio il codice
//prevent editor from deleting, editing, or creating an administrator
// only needed if the editor was given right to edit usersclass ISA_User_Caps {
// Add our filters
function ISA_User_Caps(){
add_filter( 'editable_roles', array(&$this, 'editable_roles'));
add_filter( 'map_meta_cap', array(&$this, 'map_meta_cap'),10,4);
}
// Remove 'Administrator' from the list of roles if the current user is not an admin
function editable_roles( $roles ){
if( isset( $roles['administrator'] ) && !current_user_can('administrator') ){
unset( $roles['administrator']);
}
return $roles;
}
// If someone is trying to edit or delete an
// admin and that user isn't an admin, don't allow it
function map_meta_cap( $caps, $cap, $user_id, $args ){
switch( $cap ){
case 'edit_user':
case 'remove_user':
case 'promote_user':
if( isset($args[0]) && $args[0] == $user_id )
break;
elseif( !isset($args[0]) )
$caps[] = 'do_not_allow';
$other = new WP_User( absint($args[0]) );
if( $other->has_cap( 'administrator' ) ){
if(!current_user_can('administrator')){
$caps[] = 'do_not_allow';
}
}
break;
case 'delete_user':
case 'delete_users':
if( !isset($args[0]) )
break;
$other = new WP_User( absint($args[0]) );
if( $other->has_cap( 'administrator' ) ){
if(!current_user_can('administrator')){
$caps[] = 'do_not_allow';
}
}
break;
default:
break;
}
return $caps;
}}
$isa_user_caps = new ISA_User_Caps();
-
Le funzioni isa_ sono nomi casuali dati da un'autrice che avevo trovato sul web (Isa, appunto), quindi rinominale come preferisci.
-
Vado a provare prima i plugin e poi vedo se usare questo codice... Intanto ti ringrazio...
-
Fammi poi sapere quale soluzione hai adottato
-
Allora ho già fatto un po' prove...
Ho tolto il plugin che avevo messo io e installato C.M.E., e in functions.php penso di usare il codice relativo al nascondere il nome dell'admin, così sembra tutto più pulito...Davvero grazie mille ancora... Sei stato indispensabile
ciaooo
-
È stato un piacere
comunque : 'stata' non stato
Se hai bisogno ancora fammi sapere.
buon lavoro by
monica
-
Oooops... Scusa, non mi ero accorto "che eri stata" ..
Alla prossima.. Ciaoo