Domanda

( Nota del Moderatore: Titolo originale era "Rimuovere Admin da Menu Utente")

Ho creato un ruolo di amministratore del cliente, che è essenzialmente un Editor con possibilità di aggiungere / rimuovere gli utenti. L'articolo " Editor è possibile creare nuovi utenti ad eccezione di amministratore " è stato eccellente per aiutare a mantenere il mio nuovo ruolo di client di gestione di modificare o la creazione di un utente vero amministratore.

Tuttavia ciò che sarebbe l'ideale è quello di amministratori nascondere da amministratori client quando si sta visualizzando gli utenti. Io li voglio "credere" che sono l'amministratore del loro sito, ma non voglio che siano in grado di visualizzare anche il mio ruolo / utente - essenzialmente nascondendo la "amministratore" ruolo da loro quando sono in "utenti" pannello.

È stato utile?

Soluzione

Ciao @Carlos:

Prova ad aggiungere il seguente al file di functions.php del vostro tema, o in un file di .php all'interno di un plugin che si potrebbe aver scritto (che lavora per WordPress 3.1.x):

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

Se si dispone di WordPress 3.0.x Prova a modificare la (dal momento che WordPress non aggiungere il gancio 'pre_user_query' fino 3.1):

add_action('pre_user_search','yoursite_pre_user_search');
function yoursite_pre_user_search($user_search) {
  $user = wp_get_current_user();
  if ($user->ID!=1) { // Is not administrator, remove administrator
    global $wpdb;
    $user_search->query_where = str_replace('WHERE 1=1',
      "WHERE 1=1 AND {$wpdb->users}.ID<>1",$user_search->query_where);
  }
}

Altri suggerimenti

Ecco un mod per la risposta di MikeSchinkel che controlla se l'utente corrente ha un ruolo di amministratore e se non si seleziona solo gli utenti che sono abbonati.

add_action('pre_user_query','yoursite_pre_user_query');
function yoursite_pre_user_query($user_search) {
    $user = wp_get_current_user();

    if ( $user->roles[0] != '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}user_level' 
                    AND {$wpdb->usermeta}.meta_value = 0)", 
            $user_search->query_where
        );

    }
}

Livelli utente sono deprecati , quindi questo metodo controlli contro capacità invece :

/** Hide Administrator From User List **/
function isa_pre_user_query( $user_search ) {
    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' );

azione pre_user_query può essere utilizzato per modificare la query dell'utente dal WordPress 3.1.0

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a wordpress.stackexchange
scroll top