Risoluzione dell'errore "Non hai i permessi sufficienti per accedere a questa pagina"
Ho un'installazione Multisite con WP 3.5. Il sito principale e alcuni altri blog della rete funzionano correttamente. Tuttavia, se registro un nuovo utente e sito, quell'utente riceve l'errore "Non hai i permessi sufficienti per accedere a questa pagina" ogni volta che prova ad accedere al pannello di amministrazione del sito. Il front-end del sito funziona normalmente.
Quando controllo l'utente nell'interfaccia di Amministrazione della Rete, risulta essere amministratore di quel sito. Se aggiungo l'Amministratore della Rete al sito, posso visualizzare l'area di amministrazione.
Ho provato le soluzioni comuni come disabilitare e rimuovere tutti i plugin, attivare il tema Twenty Twelve e reinstallare il core di WordPress. Nessuna di queste funziona. Come posso risolvere?

Ho passato diverse ore del mio sabato alla ricerca di questo errore. Non sono riuscito a trovare da nessuna parte su internet una guida che descrivesse la mia soluzione finale. Ecco la mia soluzione.
Nel core di WP, l'errore "Non hai i permessi sufficienti per accedere a questa pagina." viene generato alla fine di /wp-admin/includes/menu.php
. Un grep
delle directory dei miei plugin ha anche mostrato che diversi plugin possono generare questo errore.
Crea un backup di menu.php
, e sostituisci il codice all'interno del blocco if
alle righe 224-227 (nella versione 3.5) con il seguente:
if ( !user_can_access_admin_page() ) {
$a = array(
'Pagine Senza Accesso' => $_wp_menu_nopriv,
'Info Utente' => $current_user,
'Ruoli' => $wp_roles->get_names(),
);
$s = sprintf("\n<br /><pre>%s</pre>", print_r($a, true));
do_action('admin_page_access_denied');
wp_die( __('Non hai i permessi sufficienti per accedere a questa pagina.'.$s) );
}
NON lasciare questo codice attivo sul tuo sito a meno che non stia attivamente debugando! Ripristina il backup di menu.php
se devi allontanarti per un po'.
Prova ad accedere nuovamente all'area di amministrazione. Questa pagina di errore ti dirà alcune cose:
- Se ottieni un output aggiuntivo sulla tua pagina di errore, questo indica che l'errore è generato dal core di WP. Nel mio caso lo era. Se non ottieni output aggiuntivo, sai che devi iniziare a cercare il plugin che causa l'errore.
- Qualsiasi pagina nell'array
Pagine Senza Accesso
impostata su1
non è accessibile all'utente. Nel mio caso, tutte le pagine erano impostate su1
. - In
Info Utente
, controlla se l'utente ha i corretti ruoli e capacità. Nel mio caso, l'utente aveva un ruolo di10
e le capacità che dovrebbe avere come amministratore. - In
Ruoli
vedrai un elenco dei ruoli definiti per il sito. Nel mio caso, non avevo ruoli definiti. Questo era il mio problema.
Nel mio caso, ho potuto navigare nel mio database con phpMyAdmin e cercare la voce [WPDB_PREFIX]_[SITENO]_user_roles
nella tabella [WPDB_PREFIX]_[SITENO]_options
. Avevo cambiato il mio WPDB_PREFIX
, ma qualche plugin aveva creato un ruolo utente personalizzato e lo aveva scritto con il prefisso predefinito wp_
. Ho potuto copiare la voce da un sito funzionante a quello non funzionante. Non appena l'ho fatto, l'amministratore ha potuto accedere immediatamente al sito.
La mia installazione era ulteriormente complicata perché stavo usando il plugin new blog templates e il mio sito template aveva anche il database corrotto nello stesso modo.
Spero che questo sia d'aiuto.

Ottima soluzione! Pensi che se avessi fatto un cerca/sostituisci sul prefetto difettoso avrebbe risolto? P.S. - dovresti mandare un sacco di rimproveri a quegli sviluppatori - o almeno un fermo richiamo :)

Se avessi saputo fin dall'inizio qual era la causa principale del problema, sì avrei potuto farlo. Il mio problema era che dopo 2 ore del mio miglior Google-FU tutto quello che ho trovato erano variazioni del consiglio "disattiva tutti i plugin". Aggiornerò se riuscirò a identificare il colpevole.

Dopo aver provato diverse soluzioni, inclusi i permessi - nulla sembrava funzionare. Alla fine ho ricontrollato la dimensione della tabella wp_usermeta in produzione rispetto a quella in locale e ho scoperto che il caricamento era stato troncato e mancavano alcuni valori. Ho svuotato la tabella e ricaricato nuovamente tutti i metadati degli utenti. WordPress ha funzionato immediatamente dopo il caricamento. - Spero che questo possa far risparmiare tempo a qualcuno.

Anch'io ho avuto problemi con questo.
Quello che volevo era dare a un utente i privilegi di Admin ma rimuovere certi menu dalla barra laterale dell'area di amministrazione.
Ho rimosso AAM perché causava problemi di permessi e ho usato invece Menu Editor Pro. Tutto funziona perfettamente.
Ovviamente, questo non è il metodo più sicuro per gestire la situazione, poiché permette comunque l'accesso alle pagine admin nascoste digitando manualmente gli URL, ma il mio cliente non saprebbe comunque come arrivarci, quindi per me va bene così.

Questo non affronta realmente il problema, ma dato che hai già iniziato a condividere conoscenza, potresti voler aiutare qualcuno con una domanda più recente (visto che questa è piuttosto vecchia) :)

Il problema dei permessi riguarda le seguenti tabelle.
Tabella [prefix]_usermeta
Le righe con la colonna meta_key
dovrebbero riflettere il prefisso come segue.
[prefix]_capabilities
[prefix]_user_level
Tabella [prefix]_options
La singola riga con la colonna option_name
dovrebbe riflettere il prefisso come segue.
[prefix]_user_roles
