Come verificare se l'utente è nel back-end?

13 mar 2012, 07:27:36
Visualizzazioni: 40.4K
Voti: 22

Nella mia applicazione, ho un form. Ora voglio mostrare il titolo se l'utente è nel front-end, ma non voglio mostrarlo se si trova nel back-end.

Non voglio effettuare il controllo basandomi sul ruolo dell'utente.

// Metodo 1: Utilizzando is_admin()
if (!is_admin()) {
    // L'utente è nel front-end
    echo 'Il titolo';
}

// Metodo 2: Controllando la variabile globale $pagenow
global $pagenow;
if (!isset($pagenow)) {
    // L'utente è nel front-end
    echo 'Il titolo';
}

// Metodo 3: Controllando DOING_AJAX
if (!defined('DOING_AJAX') && !is_admin()) {
    // L'utente è nel front-end e non sta eseguendo una richiesta AJAX
    echo 'Il titolo';
}
1
Commenti

Questa risposta sembra rispondere alla tua domanda: https://wordpress.stackexchange.com/a/343592/43252

MastaBaba MastaBaba
5 mar 2023 20:03:00
Tutte le risposte alla domanda 2
6
36

Usa is_admin(). Questa funzione verifica se stai visualizzando una pagina di Amministrazione, ovvero il backend.

13 mar 2012 07:41:23
Commenti

funzionerà per altri utenti come i subscriber?

Ajay Patel Ajay Patel
13 mar 2012 07:42:00

Sì. Funziona per tutti i ruoli.

Rutwick Gangurde Rutwick Gangurde
13 mar 2012 07:42:42

E per caricare uno script su una specifica pagina di amministrazione?

AlxVallejo AlxVallejo
27 dic 2012 03:01:55

L'hook di azione admin_print_scripts è pensato per fare questo.

Rutwick Gangurde Rutwick Gangurde
27 dic 2012 07:09:48

Da notare, una richiesta ajax farà sì che questo restituisca TRUE.

Inoltre, proprio nella documentazione dice che questo non è pensato per essere usato come controllo di sicurezza.

Rebecca Dessonville Rebecca Dessonville
12 dic 2017 18:54:45

Questo non si applica più a WordPress da Gutenberg. Ora, tutti gli schermi che usano Gutenberg restituiranno false quando si verifica is_admin. Lo stesso nel Customizer. E anche quando si effettuano chiamate AJAX. is_admin è una funzione fuorviante e abusata. Non puoi usarla per verificare in sicurezza se sei in una schermata di amministrazione. Quindi, non puoi nemmeno usarla per verificare se sei nel front end, perché durante una chiamata AJAX questa funzione restituirebbe true, poiché la funzione per definizione Determina se la richiesta corrente è per una pagina dell'interfaccia amministrativa. Questo è vero in una chiamata ajax.

User User
23 ago 2021 08:23:07
Mostra i restanti 1 commenti
3
20

Utilizza is_admin() per verificare se la pagina corrente è una pagina di amministrazione. Nonostante il nome, questa non è una verifica del ruolo dell'utente. Restituisce sempre FALSE sul front end, indipendentemente dal ruolo dell'utente.

13 mar 2012 07:40:16
Commenti

Falso da quando il pessimo editor a blocchi è stato imposto alla comunità di WP: https://core.trac.wordpress.org/ticket/47394 Da allora, non puoi più determinare in modo sicuro se ti stai muovendo nell'area di amministrazione o nel front end.

User User
3 mar 2023 10:36:54

@BedaSchmid - Qual è l'alternativa a is_admin?

Motivated Motivated
28 giu 2023 11:08:19

@Motivated non ce n'è. Ora devi fare un SACCO di controlli, come verificare se è durante un evento ajax, se è una specifica schermata, se è una modifica di blocchi, se l'utente è loggato, se l'utente ha i permessi... ecc. Non è mai stato diverso in termini di sicurezza dato che is_admin NON controlla se l'utente è admin o meno, ma almeno permetteva di capire genericamente se era un'area di amministrazione (a meno delle richieste AJAX, dove is_admin è sempre vero). Il paradosso è che gli editor a blocchi ti dicono is_admin FALSE, perché non funzionano "nel backend" ma via REST.

User User
29 giu 2023 04:30:37