- Home
- Categorie
- Coding e Sistemistica
- WordPress
- Come nascondo l'admin agli altri utenti?
-
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