Come controllare se siamo nell'admin o nel frontend?

17 lug 2013, 21:12:42
Visualizzazioni: 20.7K
Voti: 11

Come si può verificare se siamo nell'area amministrativa o nel frontend?

Voglio utilizzare add_action non nel backend, ma solo nel frontend.

// Verifica se NON siamo nell'area amministrativa if ( !is_admin() ) { add_action( 'your_hook', 'your_function' ); } // OPPURE verifica se siamo nel frontend if ( !is_admin() && !wp_doing_ajax() ) { add_action( 'your_hook', 'your_function' ); }
0
Tutte le risposte alla domanda 3
6
19

Dai un'occhiata al is_admin() tag condizionale:

function wpse106895_dummy_func() {
    if ( ! is_admin() ) {
        // fai quello che devi fare
    }
}
add_action( 'some-hook', 'wpse106895_dummy_func' );

is_admin() restituisce true, se l'URL a cui si accede è nella dashboard / wp-admin. Quindi la sua negazione (tramite l'operatore not) è true quando ci si trova nel frontend.

Aggiornamento, vedi i commenti qui sotto:

function wpse106895_dummy_func() {
    // fai quello che devi fare
}
if ( ! is_admin() ) add_action( 'some-hook', 'wpse106895_dummy_func' );

ti farà risparmiare overhead.

17 lug 2013 21:16:02
Commenti

if ( is_admin() ) add_action(). Non riempire l'array del filtro con valori che non ti serviranno mai.

fuxia fuxia
17 lug 2013 21:51:29

Spesso verifico(avo) all'interno della callback - dopotutto, pensavo, le istruzioni non verranno mai interpretate se la condizione non è soddisfatta. Non ho mai considerato l'overhead nell'array del filtro. Mai.

Johannes Pille Johannes Pille
17 lug 2013 21:56:33

! is_admin() restituisce vero anche su wp-admin e wp-login.php, quindi non è un controllo per il frontend

Benjamin Intal Benjamin Intal
1 ago 2015 11:17:28

Tieni presente che is_admin non controllerà le chiamate cron e ajax. Quindi, se hai davvero bisogno solo del frontend, questo potrebbe non essere sufficiente.

janw janw
12 nov 2016 17:56:35

Per seguire quanto menzionato da @janw, un controllo vero per il frontend sarebbe questo ( ! is_admin() || wp_doing_ajax() ) && ! wp_doing_cron()

WPExplorer WPExplorer
5 mag 2020 09:38:34

@WPExplorer - qual è l'opposto del tuo 'controllo vero per il frontend' - verificare il 'back end', e non modificare un commento lì, o aggiungere una risposta al commento nella schermata admin/comments?

Rick Hellewell Rick Hellewell
23 gen 2022 03:07:43
Mostra i restanti 1 commenti
0

Backend e frontend nel web moderno sono più uno stato mentale che un effettivo schema di URL o codice distinti. Se una pagina specifica rientri nel backend o nel frontend può cambiare in base al tipo di utente che sta accedendo alla pagina.

Nel contesto di WordPress, la domanda potrebbe essere riformulata come "Voglio aggiungere un'azione quando il tema sta generando HTML" (il che potrebbe o meno coprire tutta la generazione del frontend nel tuo caso specifico), e per questo, l'hook migliore da utilizzare è template_redirect che viene attivato proprio prima che WordPress decida quale template del tema utilizzare per generare l'HTML.

25 mag 2018 19:00:35
1

Sfortunatamente la funzione is_admin() non funziona correttamente se devi verificare in Widget::widget() se il codice viene recuperato nel front-end o nella pagina di amministrazione.

Per questo motivo c'è un problema nel distinguere la visualizzazione di ciò che il widget mostra sul blog e ciò che viene visualizzato nella sottopagina widget.php del pannello di amministrazione. Nella pagina dashboard widgets.php, l'anteprima del widget è un output dal tag HTML <iframe>, quindi is_admin() non è una buona soluzione in questo caso.

Poiché non esiste una funzione is_front_end() in WordPress, una soluzione interessante è creare una funzione che verifichi se le funzioni get_header() e get_footer() sono state attivate durante la richiesta corrente. Una funzione semplice.

<?php 

    function is_front_end() {
        if ( did_action( 'get_header' ) || did_action( 'get_footer' ) ) 
            return true;
    }

?>

Ispirazione grazie alla risposta di @TheDeadMedic:

https://wordpress.stackexchange.com/a/228236/84343

16 nov 2023 09:59:48
Commenti

Non sono sicuro se funzionerebbe in ogni caso, se vuoi fare qualcosa prima che l'header venga visualizzato, o nell'header stesso, questo non funzionerà?

DrLightman DrLightman
14 nov 2024 15:13:00