Care este condiția pentru a verifica dacă suntem în admin sau frontend?

17 iul. 2013, 21:12:42
Vizualizări: 20.7K
Voturi: 11

Care este condiția pentru a verifica dacă suntem în admin sau frontend?

Vreau să folosesc add_action nu în backend, ci doar în frontend.

if ( !is_admin() ) {
    add_action( 'hook_name', 'function_name' );
}
0
Toate răspunsurile la întrebare 3
6
19

Aruncă o privire la is_admin() eticheta condițională:

function wpse106895_dummy_func() {
    if ( ! is_admin() ) {
        // fă ceea ce ai de făcut
    }
}
add_action( 'some-hook', 'wpse106895_dummy_func' );

is_admin() returnează true, dacă URL-ul accesat se află în panoul de administrare / wp-admin. Prin urmare, negația sa (prin operatorul not) este true când suntem în frontend.

Actualizare, vezi comentariile de mai jos:

function wpse106895_dummy_func() {
    // fă ceea ce ai de făcut
}
if ( ! is_admin() ) add_action( 'some-hook', 'wpse106895_dummy_func' );

va reduce overhead-ul.

17 iul. 2013 21:16:02
Comentarii

if ( is_admin() ) add_action(). Nu umpleți array-ul de filtre cu valori de care nu aveți niciodată nevoie.

fuxia fuxia
17 iul. 2013 21:51:29

Deseori verific(am) în interiorul callback-ului - la urma urmei, am considerat că instrucțiunile nu vor fi niciodată interpretate dacă condiția nu este îndeplinită. Supraîncărcarea în array-ul de filtre nu am luat-o în considerare niciodată.

Johannes Pille Johannes Pille
17 iul. 2013 21:56:33

! is_admin() returnează true și pe wp-admin și wp-login.php, deci nu este o verificare pentru frontend

Benjamin Intal Benjamin Intal
1 aug. 2015 11:17:28

Ține minte că is_admin nu va verifica apelurile cron și ajax. Deci dacă ai nevoie cu adevărat doar de frontend, acest lucru poate să nu fie suficient.

janw janw
12 nov. 2016 17:56:35

Pentru a continua cum a menționat @janw, o verificare adevărată a frontend-ului ar arăta astfel: ( ! is_admin() || wp_doing_ajax() ) && ! wp_doing_cron()

WPExplorer WPExplorer
5 mai 2020 09:38:34

@WPExplorer - care este opusul verificării tale pentru 'frontend adevărat' - verificarea pentru 'back end', și nu editarea unui comentariu acolo sau adăugarea unui răspuns la comentariu pe ecranul admin/comentarii?

Rick Hellewell Rick Hellewell
23 ian. 2022 03:07:43
Arată celelalte 1 comentarii
0

Backend-ul și frontend-ul în mediul web modern sunt mai degrabă o stare mentală decât un model distinct de URL-uri sau cod. Dacă o anumită pagină este considerată backend sau frontend poate varia în funcție de tipul de utilizator care accesează pagina.

În contextul WordPress, întrebarea poate fi reformulată ca "Vreau să adaug o acțiune atunci când tema generează HTML" (ceea ce poate sau nu acoperi toată generarea de frontend în cazul tău specific), iar pentru aceasta, cel mai bun hook de utilizat este template_redirect, care este declanșat chiar înainte ca WordPress să decidă ce șablon al temei să folosească pentru a genera HTML-ul.

25 mai 2018 19:00:35
1

Din păcate, funcția is_admin() nu funcționează corect atunci când trebuie să verifici în Widget::widget() dacă codul este afișat pe front-end sau pe pagina de administrare.

Din această cauză, există o problemă în a distinge între ceea ce afișează widget-ul pe blog și ceea ce apare pe subpagina widget.php din panoul de administrare. Pe pagina widgets.php din dashboard, previzualizarea widget-ului este generată prin intermediul tag-ului HTML <iframe>, astfel is_admin() nu este o soluție bună în acest caz.

Deoarece nu există o funcție is_front_end() în WordPress, o soluție interesantă este să creăm o funcție care verifică dacă funcțiile get_header() și get_footer() au fost apelate în timpul cererii curente. Funcție simplă.

<?php 

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

?>

Inspirație mulțumită răspunsului lui @TheDeadMedic:

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

16 nov. 2023 09:59:48
Comentarii

Nu sunt sigur dacă acest lucru ar funcționa în orice caz, dacă vrei să faci ceva înainte ca header-ul să fie afișat, sau în header însuși, acest lucru nu va funcționa?

DrLightman DrLightman
14 nov. 2024 15:13:00