Jak korzystać z tagów warunkowych w WordPressie
Opublikowany: 2020-06-09Jedną z rzeczy, które najbardziej lubię w WordPressie, jest to, że zawiera wiele funkcji, które znacznie upraszczają naszą pracę jako programistów. Rozważmy na przykład funkcje, takie jak esc_attr , które wyprowadzają tekst, aby można go było bezpiecznie dodać w atrybucie znacznika HTML, lub esc_html , która wyprowadza tekst, dzięki czemu można go bezpiecznie dołączyć do strony HTML. Lub spójrz na niektóre funkcje, które musimy oczyścić z danych, które otrzymujemy od użytkownika: sanitize_text_field , sanitize_textarea_field lub sanitize_email . Tak bardzo przyzwyczajasz się do tych dobrze zdefiniowanych funkcji, że naprawdę za nimi tęsknisz, gdy musisz stworzyć coś poza domeną WordPressa i odkrywasz, że nie są już dostępne!
Zbiór funkcji, którymi dysponujemy, gdy tworzymy na WordPressie, jest niesamowicie duży. A im bardziej je znamy, tym łatwiej jest napisać kod wysokiej jakości.
Dzisiaj chciałbym opowiedzieć o tagach warunkowych w WordPressie: czym są, jak ich używać, co może wprowadzać w błąd i dlaczego są tak przydatne. Jeśli jesteś programistą wtyczek lub motywów i jeszcze ich nie znasz, nie przegap tego posta.
Czym są warunkowe tagi WordPressa?
Tagi warunkowe to funkcje zdefiniowane w WordPress, których wynikiem jest wartość logiczna (czyli true lub false ). Są to funkcje, których możemy używać zarówno w naszych wtyczkach, jak i motywach, aby podejmować warunkowe decyzje na podstawie treści, którą zamierzamy renderować.
To, co sprawia, że tagi warunkowe są świetne, to ogólnie rzecz biorąc, ich nazwy nie wymagają wyjaśnień i dają bardzo łatwy do zrozumienia kod. Na przykład, jeśli użyjesz tagu warunkowego is_sticky we wtyczce, z pewnością zwróci true , jeśli wewnątrz pętli WordPress przetwarzamy przyklejony post. Nie ma wątpliwości co do jego semantyki, prawda?
Zanim zaczniemy od kilku przykładów, pamiętaj, że tagi warunkowe są dostępne tylko wtedy, gdy WordPress określi, o jaką zawartość poprosił odwiedzający. Jeśli spróbujemy ich użyć wcześniej, ich wynik będzie zawsze false . Innymi słowy, możemy ich użyć dopiero po uruchomieniu akcji posts_selection .
Najczęstsze tagi warunkowe
Większość tagów warunkowych w WordPressie zaczyna się od is_ , ponieważ odpowiedź na pytanie typu „is blah blah?” to wartość logiczna: „tak” lub „nie”. Ale niestety to kryterium nie zawsze jest przestrzegane (jak zobaczymy poniżej).
W WordPressie istnieje wiele tagów warunkowych, z którymi zapoznasz się w miarę potrzeb. Ale jest sporo takich, które są niezwykle powszechne i im szybciej je poznasz, tym lepiej. Przyjrzyjmy się więc bliżej tym:
-
is_single. Sprawdza, czy bieżący element jest postem WordPress lub instancją dowolnego innego niestandardowego typu postu (takiego jak na przykład produkt WooCommerce ). -
is_page. Sprawdza, czy bieżący element jest stroną WordPress. -
is_attachment. Sprawdza, czy bieżący element jest załącznikiem. Załączniki to te pliki, które przesyłasz do Biblioteki multimediów, takie jak obrazy, filmy, pliki itp. -
is_singular. Sprawdza, czy którakolwiek z trzech poprzednich funkcji jesttrue. Oznacza to, że sprawdza, czy bieżący element jest postem, stroną, załącznikiem lub dowolnym innym typem posta. -
comments_open. Zwraca wartośćtrue, jeśli odwiedzający mogą komentować bieżący element. Widzieć? Oto przykład, w którym tag warunkowy nie zaczyna się odis_. -
is_category. Sprawdza, czy aktualnie przeglądamy stronę archiwum kategorii. -
in_category. Zwraca true, jeśli bieżący post znajduje się w danej kategorii. -
is_tag. Sprawdza, czy aktualnie przeglądamy stronę archiwum tagów. -
has_tag. Sprawdza, czy bieżący post jest oznaczony określonym tagiem. -
is_main_query. Sprawdza, czy jesteśmy w głównej pętli WordPressa.
Czy wiesz, że istnieją tagi warunkowe, które mogą wprowadzać w błąd?
W niektórych przypadkach tagi warunkowe mają nazwy, które mogą wprowadzać nas w zakłopotanie, ponieważ to, co wydają się oceniać, a to, co faktycznie oceniają , to dwie różne rzeczy:
-
is_admin. Możesz pomyśleć, że ta funkcja sprawdza, czy bieżący użytkownik jest administratorem, prawda? Zło! Sprawdza, czy jesteśmy na stronie w panelu WordPress (i wtedy wynik byłbytrue) czy w interfejsie (czylifalse). -
is_home. Kiedyś myślałem, że ta funkcja sprawdza, czy aktualna strona jest Twoją stroną domową. Na przykład w naszej witrynie będzie tohttps://neliosoftware.com. Ale niestety tak nie jest. WordPress narodził się jako platforma blogowa i myślę, że jest to przykład jakiegoś „starszego kodu”.is_hometo funkcja warunkowa, która sprawdza, czy bieżąca strona jest stroną bloga . Na przykład, jeśli używasz domyślnej konfiguracji WordPressa,is_homerzeczywiście zwraca wartośćtrue, gdy odwiedzający jest na stronie głównej (https://yourweb.com), ponieważ ta strona zawiera najnowsze wpisy na blogu. Ale jeśli ustawisz stronę swojego bloga na coś innego (na przykładhttps://yourweb.com/blog), tois_homebędzietrue, gdy odwiedzający zażądahttps://yourweb.com/blogifalsew przeciwnym razie. -
is_front_page. I to jest tag warunkowy, który poinformuje Cię, kiedy użytkownik jest na „stronie głównej”. -
is_dynamic_sidebar. Ta funkcja sprawdza, czy Twój motyw ma jeden lub więcej pasków bocznych widżetów, a jeśli tak, zwrócitrue, jeśli przynajmniej jeden z tych pasków bocznych nie jest pusty.
Parametryzacja tagów warunkowych
Chociaż większość tagów warunkowych to funkcje, które można wywoływać bez parametrów, wiele z nich obsługuje parametry. Jeśli ich użyjemy, możemy dokładniej określić kryteria, jakie powinien spełniać aktualny post. I robią to w dość logiczny sposób.

W zależności od konkretnej funkcji, której używamy, możemy chcieć sprawdzić, czy bieżący element ma określony identyfikator lub określony slug, czy jest to instancja określonego typu posta, a nawet czy ma określony tytuł. Na przykład:
-
is_singular( 'product' )sprawdza, czy bieżący element jest produktem . -
is_page( 'Contact Us' )sprawdza, czy tytuł bieżącej strony to „Skontaktuj się z nami”. Ta funkcja akceptuje różne typy argumentów iw zależności od tego, co podasz, sprawdzi jedną lub drugą rzecz. Na przykład możesz sprawdzić, czy bieżący element ma określony identyfikator lub określony tytuł lub slug. Całkiem fajnie, co? Możesz nawet używać list jako parametrów! -
is_single( [ 5, 10, 11 ] )sprawdza, czy identyfikator bieżącego elementu to 5, 10 lub 11. Jest dość podobny dois_page, ale jak powiedzieliśmy wcześniej, działa w przypadku postów innych niż page.
Jak używać tagów warunkowych
Przyjrzyjmy się kilku przykładom, w których przydatne mogą być tagi warunkowe.
Dostosowywanie szablonów
Jak zapewne przewidziałeś, tagi warunkowe są oczywiście przydatne w motywach. Jeśli chcesz, aby motyw pokazywał tę lub inną informację w zależności od rodzaju oglądanej treści w danym momencie (i jest to coś, co często chcemy robić), tagi warunkowe są twoimi sprzymierzeńcami:
<?php // ... if ( ! is_page() ) { echo '<span class="whatever">'; echo $something_relevant; echo '</span>'; } // ...Dzięki temu możesz używać tego samego szablonu dla różnych typów treści i dostosowywać każdy z nich za pomocą tagów warunkowych.
Warunkowe kolejkowanie aktywów
Ale tagi warunkowe są również niezwykle przydatne dla twórców wtyczek. W szczególności pomagają nam warunkowo ładować części naszej wtyczki, w zależności od wyników, jakie otrzymujemy z tagów warunkowych.
Na przykład wyobraź sobie, że opracowujemy wtyczkę, która dodaje jakąś funkcjonalność do naszych postów na blogu. Załóżmy, że ta funkcja wymaga umieszczenia skryptu i arkusza stylów w kolejce do interfejsu użytkownika. Do kolejkowania skryptów i stylów w WordPressie mamy filtr o nazwie wp_enqueue_scripts :
function nelio_plugin_fancy_feature() { wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' ); Problem z poprzednim fragmentem polega na tym, że zawsze umieszcza on nasze zasoby w kolejce, bez względu na to, czego zażądał użytkownik. Za każdym razem, gdy uruchomi się wp_enqueue_scripts (i dzieje się to w każdym żądaniu front-endu), nasza funkcja wywołania zwrotnego zostanie wywołana, a nasz skrypt i arkusz stylów zostaną dodane. Ale powiedzieliśmy, że nasza funkcja dotyczy tylko postów na blogu, więc… czy naprawdę musimy zawsze kolejkować te zasoby? Oczywiście nie! Możemy to poprawić, używając odpowiedniego tagu warunkowego:
function nelio_plugin_fancy_feature() { if ( ! is_single( 'post' ) ) { return; } wp_enqueue_script( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.js' ); wp_enqueue_style( 'nelio_plugin_feat', nelio_plugin()->url . '/assets/dist/feat.css' ); } add_action( 'wp_enqueue_scripts', 'nelio_plugin_fancy_feature' );W podsumowaniu
Tagi warunkowe WordPressa pozwalają nam testować różne kryteria naszych treści, a tym samym dostosowywać, co się na ich podstawie stanie. Mimo swojej ekstremalnej prostoty są to bardzo przydatne funkcje, dzięki którym nasz kod jest bardziej zrozumiały i wydajny.
Mam nadzieję, że dzisiaj się czegoś nauczyłeś i jak zawsze, jeśli masz jakieś pytania lub komentarze, daj nam znać w sekcji komentarzy poniżej.
Polecane zdjęcie Justina Luebke na Unsplash.
