✅ Nowości, motywy, wtyczki WEB i WordPress. Tutaj dzielimy się wskazówkami i najlepszymi rozwiązaniami dla stron internetowych.

Podstawy działania hooków w WordPressie

38

Za każdym razem, gdy zaczyna się bardziej zaawansowane programowanie – czy to w WordPressie, czy w jakimkolwiek innym frameworku, bibliotece, fundamencie lub języku programowania – są chwile, w których nowe koncepcje mogą być często trudniejsze do zrozumienia niż inne.

Generalnie stwierdziłem, że jest to prawdą, gdy dana osoba nauczyła się podstaw, powiedzmy, programowania obiektowego, ale nie była wystawiona na niuanse pewnych rzeczy, takich jak wzorce projektowe.

Przykład: pisałem o wzorcu projektowym opartym na zdarzeniach (lub publikuj-subskrybuj lub Pub/Sub, jak niektórzy lubią to nazywać) w innych postach.

Tak, istnieją pewne różnice między nimi, ale ogólna idea jest taka, że ​​coś się dzieje, a wydarzenie jest podnoszone i wszystko, co nasłuchuje tego wydarzenia lub subskrybuje to wydarzenie, zareaguje.

Podstawy działania hooków w WordPressie

Zdjęcie: Claus Grünstäudl na Unsplash

Jest to podstawowy wzorzec, który stosuje WordPress, który pozwala nam dosłownie podłączyć się do pewnych punktów wykonania. Ogólnie rzecz biorąc, możemy je konceptualizować jako haki akcji w WordPressie.

W każdym razie aplikacja udostępnia nam pewne punkty, aby dodać własną funkcjonalność. Po zarejestrowaniu tej funkcji WordPress opuści swoją bazę kodu, że tak powiem, wskoczy do naszej, a następnie wróci do naszej.

Łatwo to zrozumieć, ale co zrobić, jeśli chcesz ujawnić obszary w swoim kodzie, które pozwalają innym na podpięcie się do Twojego kodu?

Haki akcji w WordPressie

Zanim przyjrzymy się, jak WordPress implementuje te wzorce, ważne jest, aby zrozumieć podstawy tego wzorca. Chociaż w żadnym wypadku nie jest to wyczerpujące, ma pomóc w podstawowym zrozumieniu wzorca, aby można było czytać i pisać kod oparty na WordPressie.

Jaki jest więc dobry sposób myślenia o wzorcu Pub/Sub? Wikipedia definiuje to jako:

W architekturze oprogramowania publikuj-subskrybuj to wzorzec wiadomości, w którym nadawcy wiadomości, zwani wydawcami, nie programują wiadomości, które mają być wysyłane bezpośrednio do określonych odbiorców, zwanych subskrybentami, ale zamiast tego kategoryzują opublikowane wiadomości w klasy bez wiedzy o tym, którzy subskrybenci, jeśli w ogóle., może być. Podobnie subskrybenci wyrażają zainteresowanie co najmniej jedną klasą i otrzymują tylko interesujące wiadomości, bez wiedzy o tym, którzy wydawcy, jeśli w ogóle, istnieją.

Zrozumienie wzorca

Na początku może to być dużo. Nie wiem, ale podzielmy to:

  1. Istnieje usługa, w naszym przypadku WordPress, która jest odpowiedzialna za publikowanie wiadomości do każdego subskrybującego (niekoniecznie wie, kto słucha).
  2. Gdy subskrybent nasłuchuje, podejmie działanie, gdy tylko je usłyszy.
  3. Gdy kod subskrybenta zostanie wykonany, program powróci do pierwotnego punktu wykonania (czyli tam, gdzie wydawca wysłał wiadomość).

Są w tym niuanse, takie jak funkcjonalność asynchroniczna i tym podobne, ale to jest bardziej zaawansowane niż wolałbym w tym konkretnym poście. W końcu celem tego jest stworzenie podstaw do zrozumienia i wdrożenia funkcjonalności.

Funkcjonalność asynchroniczna może wejść w wątki lub Ajax i to są ważne tematy, to nie jest ten post.

Jak to wygląda w WordPressie?

Być może najłatwiejszym sposobem opisania tego konkretnego wzorca w WordPressie jest użycie wywołań funkcji:

  • zrób_działanie
  • add_action

Czasami nazewnictwo może być mylące, ale po prostu mówiąc, do_action publikuje oraz subskrybentów zdarzenia i add_action do zdarzenia. A może lepszym sposobem myślenia o tym jest:

do_action mówi WordPressowi, aby wykonał wszystkie dodane działania.

Czasami pomocne jest posiadanie prostych zwrotów do zapamiętania, jak to działa. Nie wiem, czy powyższe zdanie jest najbardziej chwytliwym czy najbardziej zapadającym w pamięć, ale to coś, prawda?

Ponadto zauważ, że do_action i add_action to rzeczy, które są podstawą WordPressa i są również dostępne dla naszego rozwoju. Zanim przejdziemy dalej, spójrzmy, co każdy z nich oznacza:

Dla do_action :

Ta funkcja wywołuje wszystkie funkcje dołączone do zaczepu akcji $tag. Możliwe jest tworzenie nowych podpięć akcji, po prostu wywołując tę ​​funkcję, określając nazwę nowego podpięcia za pomocą $tagparametru.

Podstawy działania hooków w WordPressie

Lub prościej mówiąc:

Wykonywanie funkcji zaczepionych o konkretny zaczep akcji.

Odnosząc się do haczyków, mogą to być haki zdefiniowane przez WordPress lub niestandardowe haki, które określisz w swoim motywie lub wtyczce.

Podstawy działania hooków w WordPressie

Co do add_action :

Akcje to haki, które rdzeń WordPressa uruchamia w określonych punktach podczas wykonywania lub gdy wystąpią określone zdarzenia. Wtyczki mogą określać, że jedna lub więcej funkcji PHP jest wykonywanych w tych punktach, używając API Action.

Podstawy działania hooków w WordPressie

I podobnie, prościej:

Podłącza funkcję do określonej akcji.

Praktyczne ustawienie tego jest nieco inne, ponieważ generalnie używamy add_action do dodawania własnego kodu do WordPressa.

Praktyczny przykład

Na przykład, być może napisałeś coś takiego:

<?php
add_action('wp_insert_post_data', __NAMESPACE__. 'processPermalink');
/**
 * Processes the permalink so we can remove any characters that may cause a problem when communicating
 * with the API.
 *
 * @param  array $data The array of information about the post.
 * @return array $data The data without the malformed information in the post name for the URL.
 */
public function processPermalink($data)
{
    if (!in_array($data['post_status'], array('draft', 'pending', 'auto-draft'))) {
        $data['post_name'] =
            preg_replace(
                '/(%ef%b8%8f|™|®|©|™|®|©|™|®|©)/',
                '',
                $data['post_name']
            );
    }
    return $data;
}

W tym przypadku gdzieś w bazie kodu WordPressa znajduje się wywołanie do_action dla haka wp_insert_post_data, które akceptuje funkcję i przekazuje jej przynajmniej jeden parametr.

Dodawanie własnych hooków

Ale co, jeśli chcesz dać innym programistom możliwość podłączenia się do Twojej wtyczki lub motywu? W takim przypadku powinieneś zająć się używaniem do_action, a strona, do której link znajduje się wcześniej w tym dokumencie, zawiera wszystko, czego potrzebujesz, aby to skonfigurować.

Moim zdaniem jest to o wiele prostsze niż praca z add_action, ponieważ add_action zapewnia, że ​​nie tylko podłączamy się do istniejącego wydawcy, ale także dodajemy własną niestandardową logikę.

z kolei do_action wymaga podania nazwy funkcji, która ma zostać wykonana, a następnie listy argumentów, które mają zostać przekazane do funkcji, która ma zostać wykonana.

Otóż ​​to?

Mówiąc tak prosto, jak tylko potrafię, tak. Istnieje kilka niuansów dotyczących priorytetu, liczby argumentów oraz pracy z przestrzeniami nazw i programowaniem obiektowym. Ale znowu jest to poza zakresem tego konkretnego postu. Być może omówię to bardziej szczegółowo w innym poście.

Na razie jednak, jeśli nie znasz podstaw:

  • wzorzec Pub/Sub,
  • zrób_działanie,
  • i add_action

Jesteś teraz wystarczająco wygodny, aby czytać kod, z którym pracujesz, rozumieć, jak działa kod, a nawet wdrażać własne rozwiązania w razie potrzeby.

Obecnie piszę e-booka (wraz z wieloma innymi treściami premium). Jeśli jesteś zainteresowany, sprawdź co otrzymujesz.

Źródło nagrywania: tommcfarlin.com

Ta strona korzysta z plików cookie, aby poprawić Twoje wrażenia. Zakładamy, że nie masz nic przeciwko, ale możesz zrezygnować, jeśli chcesz. Akceptuję Więcej szczegółów