WordPress: Wyjaśnienie warunku "if (is_​admin() && !defined('DOING_AJAX')) return;"

Często w progra­mo­wa­niu dla WordPres­sa spoty­ka­my się z warun­ka­mi, które określa­ją, czy dany kod powinien zostać wykona­ny czy też nie. Jednym z popular­nych zapisów jest if (is_admin() && !defined('DOING_AJAX')) return;. Dziś przyj­rzy­my się bliżej temu warun­ko­wi i wyjaśni­my, jak działa.

Warunek ten składa się z dwóch części: is_admin() oraz !defined('DOING_AJAX'). Sprawdź­my, co oznacza każda z tych części.

  1. is_admin() – Ten fragment kodu spraw­dza, czy aktual­nie przeglą­da­na strona jest stroną panelu admini­stra­cyj­ne­go WordPres­sa. Gdy ta funkcja zwraca wartość true, oznacza to, że znajdu­je­my się na stronie admini­stra­cyj­nej, natomiast gdy zwraca false, jeste­śmy na stronie witry­ny (front-end).
  2. !defined('DOING_AJAX') – Jest to warunek, który spraw­dza, czy stała DOING_AJAX nie zosta­ła zdefi­nio­wa­na. W przypad­ku WordPres­sa, DOING_AJAX jest stałą używa­ną do określe­nia, czy bieżą­ce żądanie jest wykony­wa­ne za pośred­nic­twem techno­lo­gii AJAX. Gdy ta stała nie jest zdefi­nio­wa­na (czyli warunek zwraca true), oznacza to, że nie mamy do czynie­nia z żądaniem AJAX.

W połącze­niu, te dwa warun­ki is_admin()!defined('DOING_AJAX') tworzą całość if (is_admin() && !defined('DOING_AJAX')) return;. Jeśli oba warun­ki są spełnio­ne, zosta­je wykona­na instruk­cja return, która kończy wykony­wa­nie funkcji lub zacze­pu, w którym ten warunek został umiesz­czo­ny. Innymi słowy, żadna dalsza część kodu nie jest wykonywana.

Ten zapis jest użytecz­ny, gdy chcemy ograni­czyć wykona­nie pewne­go kodu tylko do określo­nych warun­ków. Na przykład, jeśli mamy funkcję, która powin­na być wywoły­wa­na tylko na stronach witry­ny (front-end) i nie w panelu admini­stra­cyj­nym lub w przypad­ku, gdy nie chcemy, aby kod był wykony­wa­ny podczas żądań AJAX.

Przykład użycia tego warun­ku możemy zobaczyć poniżej:

function moja_funkcja() {
    if (is_admin() && !defined('DOING_AJAX'))
        return;

    // Kod do wykonania tylko na stronie witryny (front-end)
    // lub kod, który nie powinien być wykonywany podczas żądań AJAX

    // ...
}

W powyż­szym przykła­dzie funkcja moja_funkcja zosta­nie odpalo­na tylko na stronie witry­ny (front-end), a kod wewnątrz niej nie będzie wykony­wa­ny, jeśli znajdu­je­my się w panelu admini­stra­cyj­nym lub jeśli żądanie jest wykony­wa­ne za pośred­nic­twem AJAX.

Teraz, gdy masz lepsze zrozu­mie­nie tego warun­ku, możesz go używać w swoich projek­tach WordPres­sa, aby dosto­so­wać wykona­nie kodu do odpowied­nich warun­ków. To przydat­ne narzę­dzie, które pozwa­la kontro­lo­wać, jakie działa­nia są wykony­wa­ne w zależ­no­ści od kontek­stu, w którym znajdu­je się strona lub żądanie.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.