Niedawno omawialiśmy sporo tematów związanych z tworzeniem stron internetowych WordPress, więc prawdopodobnie słyszałeś już o hookach, działaniach i filtrach.

Są one istotną częścią korzystania z architektury opartej na zdarzeniach używanej przez WordPress. I są twoją ścieżką do stworzenia własnej niestandardowej „wersji” WordPressa zgodnie z Twoimi potrzebami.

Krótko mówiąc, architektura oparta na zdarzeniach jest sposobem na nasłuchiwanie zdarzeń, które zmieniają określony stan, a następnie odpowiednio reagują. Twoja reakcja, to co piszesz, to jak możesz stworzyć funkcjonalność, którą pragniesz rozszerzyć funkcje WordPress.

Jako bardzo prosty przykład, publikowanie posta WordPress jest przykładem zdarzenia (publish_post), który zmienia stan.

Jest to podstawa rozszerzalności WordPress, który uczynił CMS tak bogatym ekosystemem, kwitnącym z tysiącami bogatych w funkcje motywów i wtyczek.

Jest jeszcze jeden podstawowy powód, dla którego używanie hooków WordPress jest krytyczne.

Korzystając z hooków, możesz rozbudowywać i budować na WordPressie bez potrzeby edytowania żadnego z podstawowych kodów źródłowych.

Pozwólcie, że ujmę to inaczej.

Jeśli ktoś, kogo zatrudnisz do rozwoju WordPress (lub pracujesz dla) sugeruje podstawową zmianę kodu WordPress, odpal je na miejscu.

Każdy, kto jest gotów złamać możliwość aktualizacji witryny WordPress, nie ma pojęcia, o czym mówią. Gdyby opanowali podstawy bezpieczeństwa, nawet think o zrobieniu tego.

Już o tym rozmawialiśmy. Aktualizacja WordPress (oraz jego motywy i wtyczki) do najnowszej dostępnej wersji jest jedną z podstaw zabezpieczenia WordPress. Programiści, którzy zmienią rdzeń kodu źródłowego, zostawią Twoją witrynę łatwą w obsłudze.

Jeśli twoi wynajęci programiści są gotowi podjąć taką zdradziecką ścieżkę, są szanse, że nie są również dobrze zorientowani w podstawach kodowania. Jest bardzo prawdopodobne, że będą siać spustoszenie z kodem, który piszą, pozostawiając Ciebie (lub ludzi, których zatrudniasz po nich), aby posprzątać bałagan, który zostawiają po sobie.

Z drugiej strony, jeśli używasz hooków i wszystkich innych opcji rozszerzalności, które daje WordPress, zapewniona jest możliwość aktualizacji Twojego WordPressa.

Oznacza to, że za każdym razem, gdy zostanie wydana aktualizacja rdzenia WordPress, uaktualnienie WordPress do najnowszej wersji nie złamie żadnego kodu. Nie musisz się martwić o uaktualnienie własnego niestandardowego rozwoju. Dopóki Hooki nie są przestarzałe, Twoje modyfikacje przetrwają aktualizację.

Co ważniejsze, twój WordPress jest chroniony przed luką w zabezpieczeniach WordPress, która została zabezpieczona dzięki najnowszej aktualizacji rdzenia WordPress.

Interested in learning more? The WordPress Codex provides a comprehensive guide to hooks, including a code reference for developers.
Chcesz dowiedzieć się więcej? Kodeks WordPress zapewnia kompleksowy przewodnik po hookach, w tym odniesienie do kodu dla programistów.

Haki, akcje czy filtry? Co?

Hooki to w zasadzie zdarzenia, które zdarzają się podczas wykonywania funkcjonalności WordPress, motywów lub wtyczek.

Ale dlaczego tak naprawdę nazywa się je hookami?

Programiści, którzy chcą rozszerzyć lub zaimplementować określoną funkcjonalność, mogą „zaczepić” się o zdarzenie, gdy tylko się wydarzy i wykonać określone działanie związane z tym zdarzeniem.

Ponieważ WordPress przechodzi przez fazy wykonywania, „sprawdza”, czy jakakolwiek wtyczka (lub motyw) zarejestrowała funkcję, która ma być wykonana w tym momencie, a jeśli znajdzie jakąś, funkcje te są wykonywane w tym momencie.

Kodeks WordPress, jako część dokumentacji API WordPress, całkiem ładnie wyjaśnia Hooki, działania i filtry, ale oczywiście uzupełniam te informacje.

Istnieją dwa główne typy haków

  1. Akcje (aka action Hooks)
  2. Filtry (aka haki filtracyjne)

W rzeczywistości są one dość podobne w tym, co mogą osiągnąć, ale istnieje kilka subtelnych różnic.

Różnica między Hakami akcji a Hakami filtrującymi

Zacznijmy od tego, co jest takie samo, zanim omówimy różnice.

Zarówno akcje, jak i haki filtrujące otrzymują dane poprzez szereg parametrów.

Działania i filtry są również w większości w stanie zrobić to samo (jeśli trzeba było spojrzeć na kod źródłowy WordPress, zobaczysz, że funkcje kodu, które implementują działania, są tylko opakowaniami funkcji kodu filtra).

Istnieje jednak jedna kluczowa różnica między dwoma typami hooków WordPress.

Haki filtrujące są wymagane do zwrócenia wartości, haki akcji nie.

W istocie, z Hookiem filtra, funkcja hooked dostaje określoną wartość, robi swoje, a następnie zwraca zmodyfikowaną (lub nie) wersję tej wartości.

Hook akcji nie musi zwracać wartości.

Mówiąc bardziej praktycznie, za pomocą haka filtra Zwykle pracujesz nad treścią, wykonując „zmiany”, a następnie zwracając tę zawartość. Na przykład, jak zobaczymy poniżej title_save_pre hak filtra działa na tytule postu, podczas gdy content_save_pre prace nad treścią postu.

Z drugiej strony, hook akcji robi coś (co może działać na danych lub po prostu korzystać z danych), gdy wydarza się Zdarzenie. Na publish_post hook akcji uruchamia się, gdy post jest publikowany.

Kiedy i jak używać Haka akcji

Powinieneś użyć Hooka akcji, jeśli chcesz:

  1. Wstrzyknięcie HTML lub innej zawartości do bufora odpowiedzi
  2. Modyfikuj jedną lub więcej zmiennych globalnych
  3. Modyfikuj parametry przekazywane do funkcji Hooka

Sposób dodawania Hooka akcji jest następujący:

add_action ($hook, $function_to_add, $priority, $accepted_args );

gdzie $hook byłoby to działanie, które chcesz zaczepić, podczas gdy $function_to_add jest to funkcja, którą napisałeś, która zostanie wykonana po uruchomieniu tego Hooka.

W dalszej części tego artykułu zobaczymy kilka prawdziwych przykładów.

Jak i kiedy używać Haka filtrującego

Możesz użyć filtra, gdy chcesz wykonać którekolwiek z powyższych, ale chcesz / potrzebujesz zmienić wartość parametru danych.

W rzeczywistości, to nie tylko chęć, to wymóg. Musisz zwrócić wartość dla parametru, jeśli używasz haka filtra.

Sposób dodawania haka filtra jest bardzo podobny do sposobu dodawania haka akcji:

add_filter ($hook, $function_to_add, $priority, $accepted_args );

Gdzie po raz kolejny, $hook byłby hak filtra do użycia i $function_to_add to funkcja, którą będziesz pisać.

Usuwanie haków filtrów i akcji

Usuwanie dodanych haków WordPress jest dość proste. Jest odwrotnością dodawania hooków i ma bardzo podobną składnię:

remove_action ($hook, $function_to_remove, $priority);
remove_filter ($hook, $function_to_remove, $priority);

Na $ priorytet argument jest argumentem opcjonalnym.

Zarówno w add_filter oraz remove_filter case, the $ prioirity określa kolejność, w jakiej hook uruchamia się, jeśli istnieje kilka hooków „przykutych” lub działających jeden po drugim na tym samym filtrze lub haku akcji.

Wystarczy teorii, Daj mi kilka przykładów Hook WordPress!

Chociaż wspomniałem, że istnieje wiele hooków WordPress, których możesz użyć, nie pokazałem ci dokładnie, czym są do tej pory.

Oto lista wszystkich haków filtrujących, których możesz użyć, dzięki uprzejmości Kodeksu WordPress, podczas gdy jest to lista wszystkich haków akcji. Jak widać, funkcjonalność w WordPressie, którą można podłączyć, jest ogromna.

W rzeczywistości jest mało prawdopodobne, że natkniesz się na przypadek użycia, dla którego hak nie istnieje.

A jeśli natkniesz się na taki przypadek użycia, możesz chcieć przyczynić się do WordPressa i zaproponować jego włączenie do przyszłych wersji WordPressa!

Jak w momencie pisania, istnieje ponad 1900 hooków, których możesz użyć.

Number of WordPress hooks vs version

Zobaczmy, jak możemy je podłączyć, aby wykonać prostą dodatkową funkcjonalność, która nie jest dostępna za pośrednictwem rdzenia WordPress.

Przykład Haka Filtra #1

Na samym początku tego artykułu wspomniałem, że przykładem zmiany stanu jest opublikowanie artykułu WordPress.

Dla dobra tego przykładu, co zamierzamy zrobić, to utworzyć link atrybucji na dole każdego postu, tak, że jeśli ktoś jest reposting nasze artykuły na swojej stronie internetowej lock, stock I (dwa dymiące) beczka (y), będziemy mieć, co najmniej jeden backlink wskazujący z powrotem do naszej strony.

Z tego powodu, mamy zamiar podłączyć się do content_save_pre hak filtra, który jest wykonywany na treści posta przed zapisaniem go do bazy danych WordPress.

Wczytywanie gist dattard21 / 85d3b7c52375cb64b3affffedab5cca4

Jak widać, będąc hakiem filtrującym, zmieniamy, a następnie zwracamy zawartość.

Przykład Haka Filtra #2

Kolejny dość prosty filtr, który w rzeczywistości edytuje dane wyjściowe. Załóżmy, że w celach brandingowych i SEO chcesz dołączyć nazwę swojej firmy do tytułów w każdym poście WordPress. Zamiast używać wtyczki SEO lub prosić autorów o zrobienie tego ręcznie, możesz utworzyć hak filtra, który robi to, gdy dostęp do tytułu WordPress.

Ładowanie gist dattard21 / 84cca7719661e8c603d03370f82ab852

Jak widać, po raz kolejny nasz przykład haka filtra używa title_save_pre zrobić kilka zmian w tytule, a następnie zwrócić go.

Wystarczy przykładów filtrów, przejdźmy do kilku przykładów hooków akcji. Jak widać podstawowe różnice z nimi będzie to, że nie zwrócą żadnej wartości.

Przykłady Haków Akcji #1

Prawdopodobnie (powinieneś) wiedzieć, że naciśnięcie Publikuj przycisk na Twoim poście to koniec fazy publikowania, ale rzeczywisty początek fazy marketingowej. Jeśli chodzi o wypychanie treści, możesz zacząć od wypychania treści do sieci społecznościowych, gdy tylko post zostanie opublikowany. Co najmniej możesz dodać je do harmonogramu marketingu w mediach społecznościowych.

Teraz, jeśli chcesz częściowo zautomatyzować ten proces, możesz podłączyć do publish_post hak akcji i opublikuj zawartość w mediach społecznościowych.

Wczytywanie gist dattard21 / f7b86bd8ad4a72e81bf7fa8facbbdae4

Nie będę grzebać w dokładnym kodzie do publikowania, ponieważ zależy to wiele od tego, co chcesz zrobić dokładnie i istnieje wiele tutoriali na interweb do tego.

Przykład Haka Akcji #2

Załóżmy, że utworzyłeś stronę wtyczki członkostwa. Utworzyłeś również szereg zasobów bonusowych, które chcesz wysłać jako oddzielny e-mail Od e-maila rejestracyjnego.

To, co zrobimy, to użyć after_signup_user hak akcji, aby wysłać dodatkową wiadomość e-mail z zawartością bonusową.

Wczytywanie gist dattard21 / 8fe47bb976d316416f9f972b67fc8de7

Jak widać, w rzeczywistości nie zwracamy żadnej wartości (ponieważ jest to hook akcji, a nie hook filtra).

Trzeci argument add_action w powyższym kodzie znajduje się tzw. priorytet Hooka, który określa kolejność, w jakiej funkcja jest podłączona do after_signup_user akcja zostanie wykonana. Domyślna (jeśli nie określona wartość) zostanie ustawiona na 10.

Czwarty argument wskazuje liczbę argumentów zaakceptowanych przez hook funkcji, która domyślnie jest ustawiona na 1 jeśli jest pusty.

Przykład wszechobecnego kodu: dodawanie Google Analytics do WordPressa za pomocą Hooka akcji

Tylko dlatego, że jest to jeden z najbardziej rozpowszechnionych przykładów w Internecie, nie oznacza, że nie jest to świetny przykład użycia hooków akcji!

Podłączamy się do wp_head hook akcji, aby dodać nasz kod Google Analytics.

Wczytywanie gist dattard21 / 7895d353eee7eec2dcabfbcfead6027

Gdzie Jeszcze Można Używać Hooków WordPress?

Pluginy i motywy oczywiście. Zarówno podstawowe, jak i niestandardowe wtyczki i motywy WordPress ujawnią własne haczyki, aby programiści mogli dodać własną niestandardową funkcjonalność do motywu lub wtyczki bez łamania motywu lub wtyczki.

Jeśli chodzi o rzeczywisty kod, proste zmiany mogą iść w funkcje.php pliku, ale nie ma rzeczywistej specyfikacji ani limitu, w którym filtry powinny się znajdować.

Przydatne Haki, Których Możesz Użyć

Jeśli jesteś przekonany co do przydatności hooków, możesz użyć kilku z tych fragmentów kodu używając hooków.

Przydatne fragmenty kodu dla WordPress z WP Theme Detector-sporo z nich faktycznie korzysta z różnych haków WordPress (Zastrzeżenie: nie testowane ani zatwierdzone).

Więcej przydatnych fragmentów kodu dla WordPress z WP Kube za pomocą różnych hooków.

A na tej ogromnej liście sztuczek WordPress jest sporo haczyków.

Haki WordPress: Twoja wyobraźnia jest jedynym ograniczeniem

Jak widać w tym artykule, haki WordPress dają Ci dużą moc i możliwości rozszerzenia podstawowych funkcji WordPress. Daje to wielką moc projektantom WordPress, programistom, a nawet freelancerom, którzy chcą tylko wykonywać małe poprawki w WordPress.

Czy jest coś, czego nie rozumiesz o hookach WordPress? Czy masz kreatywny przykład tego, jak użyłeś hooków WordPress, aby dojść do konkretnej personalizacji. Planujesz dalej używać hooków WordPress w nadchodzących projektach? Powiedz nam w komentarzach poniżej.

Tagi:

You May Also Like

Jak naprawić nieprawidłowy błąd JSON w WordPress (Przewodnik dla początkujących)

W artykule: Co powoduje błąd „nieprawidłowa odpowiedź JSON” w WordPress?1. Sprawdź adresy…

Jak zmienić kolor linku w WordPress (poradnik dla początkujących)

W artykule: Dlaczego Linki Są Ważne?Jak dodawać linki w postach i stronach…

Jak naprawić błąd krytyczny w WordPress (krok po kroku)

W artykule: Co To jest błąd krytyczny w WordPress?Co powoduje krytyczny błąd…

Jak zainstalować WordPress lokalnie na komputerze Mac za pomocą MAMP

W artykule: Jak zainstalować MAMP na komputerze MacInstalacja WordPress na komputerze MacWypróbowanie…