WordPress Hooki: niezbędny przewodnik
Opublikowany: 2021-01-26Haki WordPress to pomocne narzędzie przeznaczone dla programistów, którzy tworzą wtyczki i motywy WordPress. W rzeczywistości są tak przydatne, że twórcy WordPressa wykorzystują je w całym rdzeniu WordPressa. Ale czym dokładnie są haki WordPress i jak ich używać?
W tym przewodniku przyjrzymy się, jak skutecznie korzystać z haków WordPress i zagłębimy się w podstawy. Zanurzmy się!
Czym są hooki w WordPressie?
Krótko mówiąc, haki WordPress to fragmenty kodu WordPress, które pobierają i wykonują fragmenty innych fragmentów kodu WordPress. Zasadniczo pozwalają programistom na łatwe przeskakiwanie między różnymi plikami w ich motywach i wtyczkach.Haki WordPress są dostarczane w rdzeniu WordPress. Wykorzystuje je również każdy motyw i wtyczka.
Wyjaśnienie haków WordPress
Głównym celem hooków w WordPressie jest umożliwienie programistom fundamentalnej zmiany sposobu działania systemu zarządzania treścią bez zmiany podstawowych plików WordPressa. Ponieważ WordPress jest open-source, można bałagan z plikami core, ale istnieje 99% szans, że żałujesz go w ciągu kilku minut.
Chociaż może to być nieco trudne do zrozumienia dla nowszych programistów, absolutnie kluczowe jest poznanie sposobu działania zaczepów WordPress. Przez większość czasu powstaje zamieszanie z powodu terminologii używanej przez WordPress. Chociaż akcja zakulisowa jest dość podobna do wielu języków programowania, język jest inny. Często najłatwiej jest nauczyć się, jak je tworzyć i używać, najpierw śledząc przykłady, czytając o nich, a następnie ćwicząc.
Aby pisać hooki do WordPressa, musisz umieć kodować w PHP. PHP jest podstawowym językiem dla większości WordPressa. Możesz myśleć o hakach jako o otworach, do których mogą się przyczepić inne funkcje PHP. Możesz również pomyśleć o hakach WordPress jako wywołaniach zwrotnych, które robią coś z danymi lub wyświetlaczem, zanim użytkownik zobaczy dane.

Dwa rodzaje haków WordPress
Istnieją dwa główne typy haków WordPress, których musisz się nauczyć:
- Haki akcji WordPress
- Zaczepy filtrów WordPress
Przyjrzyjmy się tym dwóm typom haków WordPress i tym, czym się różnią. Omówimy również kilka przykładów haków akcji i haków filtrów, aby lepiej zilustrować ich użycie.
Różnica między hakami akcji WordPress a hakami filtrów
Jeśli poświęciłeś trochę czasu na przeglądanie kodeksu WordPressa, prawdopodobnie widziałeś te terminy od niechcenia. Niestety, jedną ze słabości kodeksu jest to, że jest on pisany przez samych programistów. Jako efekt uboczny, niektóre ważne rozróżnienia, które mogą być dla nich oczywiste, nie są oczywiste dla tych, którzy nie są tak zaznajomieni z podstawowym kodem WordPressa.
Najłatwiejszym sposobem rozróżnienia tych dwóch typów hooków WordPressa jest to, że hooki akcji nie zwracają wartości, podczas gdy hooki filtrów zwracają wartości.Dla osób zaznajomionych z popularnymi językami programowania jest to tak, jakby powiedzieć, że zaczepy akcji mają typ powrotu „unieważniony”, podczas gdy zaczepy filtrów zwracają rzeczywiste dane.
Haki filtrowania można traktować jako haki lub zdarzenia przetwarzania wstępnego. Przechwytywanie filtra może filtrować wyniki zwrócone z zapytania bazy danych, tak aby zawierały tylko wpisy o nazwisku „Kowalski”. Ten zaczep filtra powinien zostać wywołany przed wywołaniem rzeczywistego zapytania do bazy danych, informując wcześniej WordPress, że będzie musiał usunąć nieistotne wyniki przed ich zwróceniem.
Zaczepy akcji WordPressa można traktować jako pobieranie czegoś za pomocą kodu. Typowym przykładem zaczepu akcji jest wstawienie dodatkowego pliku CSS do strony witryny, aby wyglądała inaczej. Pamiętaj, że hooki zmieniają sposób wyświetlania danych, zanim zostaną dostarczone do użytkownika. Hak akcji dostarcza nowy plik CSS, który poprawia wrażenia użytkownika. Ten proces nie wymaga edycji rdzenia WordPressa ani nie wymaga edytowania głównego głównego katalogu witryny. W ten sposób haki WordPress mogą znacznie ułatwić, w połączeniu z wtyczkami, zarządzanie wieloma witrynami WordPress.
Wyjaśnienie haczyków i filtrów
Teraz, gdy przyjrzeliśmy się bardziej abstrakcyjnemu przeglądowi haczyków i filtrów WordPress, przyjrzyjmy się bardziej technicznym szczegółom ich działania.
Możesz myśleć o haczyku WordPress jako o zdarzeniu, które występuje z nazwą. Przykład jednego zawartego w rdzeniu WordPressa nazywa się save_post . Z hakami, my w zasadzie powiedzieć, że kiedy save_post jest wykonywany, chcemy nasz haczyk lub filtr do dołączania i uruchomić obok niego.
Do hooków w WordPressie dołączamy tzw. callbacki lub funkcje zwrotne. To tylko fantazyjny sposób na powiedzenie, że prosimy WordPressa o uruchomienie kodu zawartego w funkcjach, które stworzyliśmy, gdy zostanie uruchomione zdarzenie, które „zahaczyliśmy” (tak jak save_post w naszym przykładzie powyżej).
Chociaż dodanie hooków do WordPressa jest dość łatwe, o czym omówimy później, pamiętaj, że jedno niepoprawnie napisane wywołanie zwrotne może całkowicie zrujnować łańcuch wywołań zwrotnych. Jeśli tak się stanie, jedno uszkodzone łącze w łańcuchu wywołań zwrotnych może całkowicie zrujnować całą Twoją ciężką pracę! Zawsze wykonuj kopię zapasową przed wprowadzeniem zmian. Skorzystaj z godnej zaufania wtyczki do tworzenia kopii zapasowych WordPress, zanim wprowadzisz jakiekolwiek zmiany.
Chcesz poznać jeszcze więcej szczegółów technicznych dotyczących działania haczyków? Sprawdź następną sekcję! Mamy bardziej szczegółowe wyjaśnienie, a także samouczek dotyczący tworzenia pierwszego haka akcji i pierwszego haka z filtrem!
Jak działają hooki w WordPressie?
Pamiętaj, że istnieje kilka różnic, haki akcji i haki filtrów w WordPressie mogą być postrzegane jako w dużej mierze takie same. Przyjrzyjmy się pokrótce, jak działają te haki. W dalszej części artykułu omówimy przykład i samouczek.
Oba typy haczyków muszą być zarejestrowane w WordPressie przed ich użyciem. Daje to systemowi CMS listę funkcji do dołączenia w przypadku uruchomienia zdarzenia, do którego „zahaczyliśmy” nasz kod. Upewnij się również, że akcje są zarejestrowane jako akcje, a filtry są zarejestrowane jako filtry.
Podczas dodawania akcji skorzystaj z podstawowej funkcji WordPress add_action() . Podczas dodawania filtrów użyj odpowiedniej funkcji podstawowej WordPress o nazwie add_filter() . Jeśli twoje wywołania zwrotne (funkcje w górę łańcucha po uruchomieniu zdarzenia lub akcji) nie zwracają żadnych danych, musisz zarejestrować je jako akcję. Jeśli zwraca to, co WordPress określa jako dane do filtrowania, zarejestruj je jako filtr.
Wszystko, co określisz w tych funkcjach, zostanie uruchomione, gdy Twoja witryna zostanie otwarta przez użytkownika. WordPress ma wewnętrzny generator, który łączy dla nas wszystkie te działania i filtry. Istnieją również odpowiednie funkcje usuwania akcji i filtrów. Można je wykorzystać do wyeliminowania funkcji z łańcucha wywołań zwrotnych. Często są one zawarte w instrukcjach warunkowych w WordPressie PHP.
Podobnie jak nasze funkcje dodawania, są one nazywane remove_action() i remove_filter() .
Jak utworzyć hak w WordPressie?
W końcu nadszedł czas, abyśmy zrobili nasz pierwszy haczyk w WordPressie! Pamiętaj, że tworzenie hooków polega na dodaniu własnego kodu, który będzie wyświetlany i renderowany użytkownikom naszej strony.
Pamiętaj tylko, że za każdym razem, gdy dodajemy niestandardowy kod, dodajemy pewien poziom zagrożenia bezpieczeństwa. Dlatego właśnie teraz byłby idealny czas, aby upewnić się, że masz zainstalowaną i gotową do działania wtyczkę bezpieczeństwa WordPress, której możesz zaufać. Może to zapewnić spokój ducha i złagodzić wszelkie potencjalne zagrożenia dla Twojej witryny za pomocą niestandardowego kodu, który może wprowadzić nowe luki w zabezpieczeniach.
Przyjrzyjmy się, jak możemy zrobić bardzo prosty hak akcji w WordPressie. Następnie przyjrzymy się przykładowi haka filtra w CMS.
Jak utworzyć hak akcji w WordPressie?
W naszym przykładzie działania zróbmy coś, co prawie wszyscy programiści WordPress będą musieli zrobić w pewnym momencie: dostosuj zawartość na stronie logowania WordPress. Strona jest bardzo ogólna.
Na przykład, jeśli zarządzasz witryną WordPress dla instytucji akademickiej, mogą oni poprosić Cię o przypomnienie studentom, aby używali ich kampusowego adresu e-mail do logowania się do ich portalu WordPress. Moglibyśmy dodać proste przypomnienie w polach „Nazwa użytkownika” i „Hasło”, które mówi „ Pamiętaj, aby użyć adresu e-mail @myuniversity.edu jako nazwy użytkownika ”, aby zmniejszyć liczbę telefonów do działu IT z prośbą o pomoc w logowaniu.
To oczywiście byłoby bardziej dopasowane do haka akcji niż do haka filtra. Dzieje się tak, ponieważ proste dostosowanie, takie jak edycja tekstu na głównej stronie logowania użytkownika, w rzeczywistości nie zwraca żadnych danych do filtrowania.
Najpierw musimy dowiedzieć się, gdzie dokładnie zahaczyć naszą akcję. W większości przypadków spojrzenie na plik PHP, do którego chcesz dodać zawartość, może być bardzo wnikliwe. Patrząc na plik WordPress zawierający treść logowania, istnieje kilka wyzwalaczy akcji. W naszym przykładzie przypomnienia studentom, aby korzystali z ich instytucjonalnych adresów e-mail, zauważysz następujący kod w pliku PHP strony logowania:
do_action( 'login_footer' );
Funkcja do_action to podstawowa funkcja WordPressa, która na żądanie wykonuje nasz zaczep akcji. Oczywiście pod warunkiem, że zarejestrowaliśmy wszystkie funkcje, które chcemy dołączyć do tego haka.
W tym przypadku „login_footer” to gotowy haczyk stworzony przez zespół WordPressa. Chociaż jest wbudowany, nadal możemy dołączyć do niego własny kod. Domyślnie ten zaczep ładuje zawartość stopki ogólnej strony logowania. Stopka byłaby idealnym miejscem na nasz tekst, dlatego korzystamy z haka tej sekcji strony.
Aby rozpocząć, możemy dodać nową funkcję PHP do naszego wp-login.php. Wszystko, co musimy zrobić, to wypisać wiersz tekstu, na przykład:

funkcja add_uni_email_reminder() { <p>Pamiętaj, aby użyć adresu e-mail @myuniversity.edu jako nazwy użytkownika!< /p> } do_action( 'login_footer', 'add_uni_email_reminder' );
W tym przypadku po prostu stworzyliśmy nową „akcję” w pliku wp-login.php . Nazwę funkcji haka akcji (add_uni_email_reminder), bez nawiasów parametrów, można dodać do listy parametrów funkcji do_action() w celu zarejestrowania jej do uruchomienia, gdy stopka jest renderowana w następnej kolejności.
Jak utworzyć hook filtra w WordPressie?
Teraz jesteśmy na fali! Poznaliśmy podstawy haków WordPress i jak wykorzystać ich moc. Sami wykonaliśmy nawet małą modyfikację! Jedyną ważną częścią, która pozostała, jest ćwiczenie z haczykami filtracyjnymi. Pamiętaj, są to hooki, które zwracają pewien rodzaj danych, które możemy przefiltrować. Są one nieco bardziej złożone niż haki akcji, ale teraz, gdy znasz już podstawy haczyków, powinno to być nieco łatwiejsze.
Zacznijmy od naszego haka filtra WordPress. Najpierw musimy zdecydować, jaki konkretny filtr chcemy dodać. Jednym z elementów, o które może poprosić Twój klient, jest dostosowanie funkcji dodawania stron. Tutaj użytkownicy WordPressa mogą dodawać nowe posty na blogu. Aby było to jak najprostsze, powiedzmy, że chcemy edytować tekst „Tu wpisz tytuł” zawarty w polu tekstowym „Tytuł”. Załóżmy, że chcemy uczynić go bardziej szczegółowym i zamiast tego powiedzieć „Wprowadź tytuł posta na blogu”.
Zauważ, że w poniższym przykładzie przechwycenia filtra nasza funkcja ma parametr. Dodatkowo faktyczna realizacja naszego filtra ma dodatkowy parametr „priorytet”. Zauważysz również, że rzeczywista funkcja, której używamy do zarejestrowania naszego hooka, jest dokładnie taka sama jak w naszym przykładzie „action”, add_action . Sposób, w jaki możemy stwierdzić, że ta funkcja jest przechwyceniem filtra, a nie przechwyceniem akcji, polega na tym, że gdy jest faktycznie uruchomiona, wykonywana funkcja, jak widać w kodzie głównym WordPressa, to apply_filters( 'enter_title_her', __( 'Tu wpisz tytuł' ), $poczta ); . Stosujemy filtry, jak sugeruje nazwa funkcji.
Jest to często punkt wyjścia dla nowszych użytkowników. To naprawdę tylko drobny problem z tekstem; kiedy już to miniesz, rozszyfrowanie różnicy między haczykami a filtrami w WordPressie staje się całkiem proste! Bez dalszych pożegnań przejdźmy do zmiany tego tekstu zastępczego!
function our_new_title_tutaj( $title ) { $title = __( 'Wprowadź tytuł posta na blogu', 'domena-tekstowa' ); zwróć $tytuł; } add_action( 'tutaj_wpisz_tytuł', 'tutaj_nowy_tytuł', 10 );
Być może zastanawiasz się, co oznacza „10” w naszej funkcji add_action . Mam nadzieję, że rozumiesz pierwsze dwa parametry; pierwszy to domyślny hak WordPress, a drugi to nazwa funkcji i filtru, który dołączamy do enter_title_here . „10” to poziom priorytetu, który przypisujemy temu filtrowi.
Pamiętaj, że zarówno akcje, jak i filtry w WordPressie to seria kaskadowych „wywołań zwrotnych” lub niestandardowych funkcji, które są uruchamiane. Mają one różne poziomy priorytetów. Nieco później zbadamy, co oznaczają różne liczby, jakie są dopuszczalne parametry itp. Jednak ważne jest, aby zrozumieć, że 10 to na razie domyślny „normalny” poziom priorytetu filtrów i działań WordPress.
Gdzie są przechowywane haki WordPress?
Być może zastanawiasz się, gdzie WordPress mógłby przechowywać wszystkie te działania i filtry. Odnieśliśmy się do rdzenia WordPressa, ale jest to po prostu lokalizacja wbudowanych akcji i filtrów oraz związanych z nimi funkcji. Doświadczeni użytkownicy WordPressa prawdopodobnie wiedzą, że te haki nie są przechowywane w żadnej z baz danych utworzonych podczas instalacji WordPressa.
Jedną z najbardziej unikalnych cech akcji i filtrów w WordPressie jest to, że tak naprawdę nie są one „przechowywane” nigdzie! Gdy dodamy akcję lub filtr, dostęp do tej akcji lub filtra można uzyskać globalnie w naszej witrynie WordPress. Jeśli uważasz, że nie ma możliwości, aby były przechowywane nigdzie , masz rację!
Chociaż struktura jest dość złożona, istnieje jedna zmienna PHP, w której przechowywane są wszystkie nasze działania i filtry. Ta zmienna jest globalna i nazywa się $wp_filter . Nie zadzieraj bezpośrednio z tą zmienną!
Dla zainteresowanych szczegółami technicznymi ta zmienna $wp_filter to tablica PHP. Zawiera dużą serię obiektów typu WP_HOOK . W pliku PHP można przeczytać w wp-includes/class-wp-hook.php , jest jedna ważna metoda: this->apply_filters() . Ta metoda uruchamia wszystkie nasze wywołania zwrotne i „rejestruje” nasze niestandardowe filtry i podpięcia. To w zasadzie chleb powszedni haków WordPress.
Aby w pełni wykorzystać tę niesamowitą funkcję WordPressa, musimy poznać niektóre z najpopularniejszych haczyków WordPress. Nie szukaj dalej niż nasza ściągawka poniżej!
Lista haków WordPress: Ściągawka z hakami WordPress
Zacznijmy od małej dawki realizmu: nie ma możliwości, abyśmy mogli przejrzeć każdy hak w WordPressie. Na szczęście niektórzy badacze opracowali listę (dosłownie) każdego działania i filtra dla tych, którzy są ciekawi. Możesz zobaczyć pełną listę wszystkich haków WordPress tutaj, ale uważaj, aby spojrzeć na ostrzeżenia dotyczące bezpieczeństwa dotyczące każdego haka. Nie należy używać żadnych, które są oznaczone jako „przestarzałe”. Oznacza to, że mogą, ale nie muszą być obsługiwane w najnowocześniejszej wersji WordPressa, ale tak czy inaczej, wkrótce nie będą obsługiwane.
Najprawdopodobniej w 90% przypadków zainteresuje Cię tylko kilka haków WordPress. Oto pięć najpopularniejszych akcji i filtrów w WordPressie wraz z krótkim wyjaśnieniem, czym one są!
- add_setting() — tak jak sugeruje jego nazwa, ta akcja dodaje się do ustawień WordPressa. Prawdopodobnie nie będziesz chciał umieszczać tej akcji na żadnej stronie dostępnej dla użytkownika, ale może to uratować życie, jeśli modyfikujesz strony administracyjne.
- apply_filters() – Czy ten wygląda znajomo? Powinno, bo używaliśmy go wcześniej! To natychmiast wywołuje cały łańcuch wywołań zwrotnych związanych z podpięciem.
- esc_attr() – Nazwa tego jest skrótem dla „ucieczkowych atrybutów HTML”. Uciekanie HTML oznacza, że używamy kodów ASCII dla symboli HTML. Jest to prawie powszechnie używane do „oczyszczania danych wejściowych” na stronach. Innymi słowy, ta akcja byłaby wysoce pożądana, aby dołączyć do uruchomienia haka, gdy użytkownik przesyła formularz. Uniemożliwia użytkownikom atakowanie Twojej witryny w szczególności atakami typu cross-site scripting.
- the_content() – nazwa tego haka prawdopodobnie brzmi prosto, ponieważ tak jest! Po prostu pobiera treść aktualnie przeglądanego posta. Jest to idealne rozwiązanie, jeśli pozwalasz użytkownikom eksportować zawartość posta. Na przykład niektóre witryny oferują użytkownikom Premium możliwość wyeksportowania dowolnego artykułu jako pliku PDF.
- wp_nav_menu() – Skrót dla „Menu nawigacji WordPress”, ten hak jest hakiem akcji. Służy do wyświetlania głównego menu nawigacyjnego, które tworzysz podczas tworzenia witryny WordPress. Jest to świetne, jeśli masz strony, które mają znacznie inny układ i chcesz wyświetlić swoje menu w alternatywnym obszarze.
W jakiej kolejności działają haki WordPress? Sekwencja uruchamiania haków WordPress
Niestety dokładna kolejność uruchamiania hooków WordPressa nie jest tak oczywista, jak można by sobie wyobrazić. Wynika to z samej objętości haczyków. Jeden z badaczy przeprowadził zaawansowaną analizę tego, aby policzyć liczbę uruchomionych haków i kolejność ich uruchamiania, gdy odwiedzana była strona główna witryny WordPress.
Jakby to nie było wystarczająco skomplikowane, do niektórych haczyków WordPressa dołączone są haczyki o różnych priorytetach! Możesz rzucić okiem na setki uruchomionych haków i ich zamówienia w tym poście o sekwencji uruchamiania haków WordPress. Uwaga: nie powinieneś próbować przeprowadzać tej analizy na niczym innym, jak na serwerze testowym, na którym możesz stracić wszystko!
Chociaż nie możemy wiele zrobić z kolejnością haków domyślnych, możemy coś zrobić z kolejnością haków, którą określamy. Tu właśnie pojawia się priorytet hooków. Wspomnieliśmy o tym wcześniej.
Jak działa priorytet w hakach WordPress?
Jak wspomnieliśmy, domyślny poziom priorytetu przypisany do haka przez WordPress to „10”. Cokolwiek zdecydujesz się na priorytet, pamiętaj, że wartość musi być dodatnią liczbą całkowitą. Oznacza to, że niestety „0” nie jest prawidłową wartością. Ponadto -100 nie byłoby poprawne, a 0,5 nie byłoby poprawne. Jednak 1 zadziała, podobnie jak 1111.
Ogólnie rzecz biorąc, im mniejsza liczba całkowita, tym niższy priorytet. Jeśli chcesz, aby hak był uruchamiany po haku, któremu przypisano domyślną wartość 10, możesz ustawić jego priorytet na 9. Twojemu hakowi o najniższym priorytecie można nadać 1. Dodatkowo, hakom WordPressa można przypisać to samo priorytet. Dzieje się tak, jeśli nie obchodzi Cię, w jakiej kolejności biegną.
Zawijanie: haki w WordPress
Jedną z największych przeszkód dla nowych programistów WordPressa jest to, jak wiele z tych informacji może być niestandaryzowanych. Chociaż można znaleźć wiele blogów technicznych, wiele z nich dotyczy wąskich tematów i ich zagregowanie może być trudne.
Najlepszym sposobem jest rozpoczęcie eksperymentowania z hakami akcji WordPress i hakami filtrów w swojej witrynie. Gdy stworzysz bardziej złożone haki WordPress, musisz nauczyć się haczyków, których zwykle używasz częściej. Z biegiem czasu zapamiętasz te haki. To żmudny proces i nikt nie jest w stanie zapamiętać każdego z tych haków.
Kodeks WordPress to najlepsze źródło, które można wykorzystać w drodze do zostania kolejnym najlepszym programistą WordPress na świecie.
Kristen pisze samouczki, które pomagają użytkownikom WordPressa od 2011 roku. Zwykle można ją znaleźć, gdy pracuje nad nowymi artykułami na blogu iThemes lub opracowuje zasoby dla #WPprosper. Poza pracą Kristen lubi prowadzić dzienniki (napisała dwie książki!), wędrować i biwakować, gotować i codzienne przygody z rodziną, mając nadzieję na bardziej obecne życie.
