Jeśli kiedykolwiek musiałeś wprowadzić poprawki do motywu innej firmy lub używasz struktury motywu, będziesz zaznajomiony z motywami podrzędnymi.

Są potężną funkcją WordPress, zapewniając elastyczność dostosowywania do dowolnego motywu nadrzędnego bez ich utraty po aktualizacji motywu. Używam ich do wprowadzania zmian do motywów stron trzecich lub do motywu frameworka, który sam opracowałem.

Czasami jednak może być niejasne, czy WordPress będzie używał kodu z twojego rodzica lub motywu dziecka. Jeśli chodzi o pliki szablonów, arkusze stylów i pliki funkcji, ustalenie, kiedy jest używane, może być trudne.

W tym poście, będę demystify to wszystko. Przyjrzę się każdemu typowi pliku i zidentyfikuję, kiedy WordPress użyje kodu z Twojego motywu nadrzędnego i kiedy użyje kodu z Twojego motywu podrzędnego.

Arkusze stylów

Zarówno motyw rodzica, jak i motyw potomny będą miały arkusz stylów, ponieważ żaden motyw nie będzie działał bez arkusza stylów.

W Twoim motywie podrzędnym arkusz stylów będzie zawierał linię kodu, która mówi WordPress, że jest to motyw podrzędny i który jest motywem nadrzędnym.

Oto motyw, którego używam na mojej stronie internetowej, który jest motywem potomnym. Otwiera się z komentowanym tekstem, który mówi WordPressowi, co dzieje się z motywem:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Zwróć uwagę na linię, która zaczyna się szablon. To mówi WordPress, że jest to motyw potomny i że motyw w compassframework folder jest rodzicem.

WordPress użyje plików szablonów motywu zarówno z motywu podrzędnego, jak i motywu nadrzędnego (z których wkrótce więcej). Ale jeśli chcesz pociągnąć stylizację z motywu nadrzędnego, musisz go zapytać w motywie podrzędnym funkcje.php plik.

Dodaj następujące elementy do funkcje.php plik w motywie podrzędnym. Jeśli motyw nie zawiera tego pliku, utwórz go, upewniając się, że dodasz otwarcie <?php znacznik na początku pliku (nie musisz dodawać znacznika zamykającego na końcu).

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Powyższy kod zakłada, że motyw nadrzędny ma tylko jeden arkusz stylów; jeśli twój ma wiele arkuszy stylów, musisz zapytać o każdy z nich.

Gdy to zrobisz, style z motywu nadrzędnego zostaną użyte w Twojej witrynie. Jeśli dodajesz również style do motywu podrzędnego, musisz również zapytać o ten arkusz stylów. Poniższy kod zapewnia, że w przypadku duplikacji style z motywu podrzędnego zastąpią style z motywu nadrzędnego:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

To najpierw pyta arkusz stylów motywu nadrzędnego, a następnie motywu podrzędnego. ponieważ style motywu podrzędnego są wciągane jako ostatnie, zastąpią te z motywu nadrzędnego, jeśli dodasz stylizację dla elementu, który już ma stylizację w motywu nadrzędnym. To również ustawia arkusz stylów motywu nadrzędnego jako zależność dla arkusza stylów motywu podrzędnego, zapewniając, że arkusz stylów motywu podrzędnego nie może zostać załadowany, chyba że ten z motywu nadrzędnego już ma.

Uwaga: być może w arkuszu stylów motywu podrzędnego była używana do tego linia w przeszłości. Nie jest to już najlepsza praktyka, ponieważ spowalnia Ładowanie arkuszy stylów-zamiast tego powinieneś użyć pliku funkcji.

Pliki Szablonów

Teraz rzućmy okiem na pliki szablonów motywów. To, którego WordPress używa do wyświetlania strony w Twojej witrynie, zależy od dwóch rzeczy: hierarchii szablonów i faktu, że używasz motywu podrzędnego.

Powiedzmy, że przeglądasz stronę archiwum kategorii 'WordPress’ w swojej witrynie. WordPress użyje hierarchii szablonów, aby znaleźć najbardziej odpowiedni plik:

  1. Plik szablonu archiwum kategorii dla tej konkretnej kategorii, przy użyciu slug: Kategoria-wordpress.php
  2. Plik szablonu archiwum kategorii dla danej kategorii, przy użyciu identyfikatora: Kategoria-23.php
  3. Plik archiwum kategorii ogólnej: Kategoria.php
  4. Plik archiwum ogólnego: archiwum.php
  5. The catch-all indeks.php

WordPress będzie ich szukał zarówno w motywie rodzica, jak i dziecka. Gdy natknie się na pierwszy plik w hierarchii, użyje go, niezależnie od tego, czy jest to motyw nadrzędny, czy motyw podrzędny.

Jest jeden wyjątek: gdy najbardziej odpowiedni plik szablonu ma wersję zarówno w motywie nadrzędnym, jak i podrzędnym, użyje pliku z motywu podrzędnego i zignoruje ten z motywu nadrzędnego. Jest to jedno z najczęstszych zastosowań motywów potomnych.

Oto kilka przykładów, korzystając z powyższego przykładu kategorii:

  • Jeśli twój motyw potomny ma archiwum.php oraz indeks.php a Twój motyw rodzica ma Kategoria.php oraz indeks.php, wtedy WordPress użyje Kategoria.php z motywu nadrzędnego, ponieważ jest on Najwyższy w hierarchii.
  • Jeśli twój motyw potomny ma archiwum.php oraz indeks.php a Twój motyw rodzica ma archiwum.php oraz indeks.php, użyje archiwum.php Plik z motywu podrzędnego.
  • Jeśli twój motyw potomny ma Kategoria.php oraz indeks.php a Twój motyw rodzica ma archiwum.php oraz indeks.php, użyje Kategoria.php Plik z motywu potomnego, ponieważ jest on Najwyższy w hierarchii.

Jeśli więc chcesz nadpisać plik szablonu w szablonie nadrzędnym, Utwórz duplikat tego pliku w szablonie podrzędnym z żądanym kodem.

Funkcje

Ostatnim rodzajem pliku, którego dotyczą motywy podrzędne i nadrzędne, jest plik funkcji motywu. Dotyczy to również funkcji dodawanych do motywów za pomocą Plików Dołącz.

Funkcje z motywu podrzędnego zostaną załadowane przed tymi z motywu nadrzędnego, zakładając, że są przymocowane do tego samego Hooka. Jest to przeciwieństwo arkuszy stylów i plików szablonów i oznacza, że jeśli nie będziesz ostrożny, funkcje w motywie nadrzędnym mogą zastąpić funkcje w motywie podrzędnym.

Ważne jest, aby pamiętać, że napisanie funkcji w motywie podrzędnym o tej samej nazwie, co w motywie nadrzędnym, może spowodować błąd. WordPress nie lubi, gdy dwie funkcje mają tę samą nazwę. Wyjątek stanowi użycie funkcji w motywie podrzędnym do nadpisania funkcji wtyczkowej w motywie nadrzędnym.

Funkcje Wtykowe

Można rozpoznać funkcję wtyczkową, ponieważ będzie ona zawinięta w warunkowe sprawdzenie innej funkcji o tej samej nazwie. Innymi słowy, motyw nadrzędny sprawdza, czy funkcja o tej samej nazwie została już uruchomiona za pośrednictwem motywu podrzędnego. Jeśli tak, to nie uruchamia funkcji w motywie nadrzędnym. Więc jeśli twój motyw nadrzędny ma funkcje wtykowe, możesz łatwo nadpisać je w swoim motywie podrzędnym.

Oto przykład funkcji pluggable z mojego motywu nadrzędnego, Compass framework:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

W temacie potomnym mogę napisać inną funkcję o tej samej nazwie, która nadpisze ją:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Zostanie uruchomiona zamiast funkcji z motywu nadrzędnego, z tego powodu jeśli szach. Nie musisz używać add_action() w Twoim motywie potomnym, aby odpalić funkcję, jako add_action() funkcja w motywie nadrzędnym zrobi to dla tego z motywu podrzędnego. To dlatego, że jest poza tym warunkowym sprawdzeniem.

Używanie Priorytetu, aby najpierw uruchomić funkcje motywu nadrzędnego

Kiedy mówię, że funkcje z motywu podrzędnego będą działać przed tymi z motywu nadrzędnego (gdy są dołączone do tego samego Hooka), zakładam, że nie mają przypisanego im priorytetu.

Priorytet jest trzecim parametrem add_action() oraz add_filter() funkcje. Im wyższa liczba, której do tego użyjesz, tym później funkcja zostanie uruchomiona. Więc jeśli hak ma cztery funkcje dołączone do niego, z priorytetem 5, 10, 20 oraz 30, wtedy będą strzelać w rosnącym porządku numerycznym. Nie ma znaczenia, jakich liczb używasz; zwykle używam okrągłych liczb, więc jest luka w przypadku, gdy muszę wstawić inną funkcję w późniejszym terminie.

Jeśli nie zastosujesz priorytetu do funkcji, WordPress nadaje jej domyślny priorytet 10. Więc jeśli w Twoim motywie nadrzędnym jest funkcja bez przypisanego priorytetu i chcesz uruchomić inną funkcję na tym samym haku z motywu podrzędnego i uruchomić ją po tej z motywu nadrzędnego, po prostu nadaj jej priorytet wyższy niż 10.

Weźmy funkcję pluggable, której użyłem wcześniej, która nie ma parametru priorytetu dla add_action() funkcja. Jeśli chcesz uruchomić inny kod bezpośrednio po nim z motywu podrzędnego, użyj priorytetu, w ten sposób:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Spowoduje to dodanie kolejnej sekcji z nazwiskiem autora postu i linkiem do jego strony archiwalnej, po dacie.

Funkcje Odhaczania

Jeśli funkcja w motywie nadrzędnym nie jest wtyczalna, ale chcesz napisać funkcję w motywie podrzędnym, aby ją zastąpić, nadal możesz to zrobić. Musisz odłączyć funkcję z motywu nadrzędnego od Hooka użytego do jej uruchomienia, co oznacza, że nie zostanie ona uruchomiona. Następnie piszesz funkcję o innej nazwie w szablonie potomnym, aby ją zastąpić i podłączysz ją do tego samego Hooka.

Wyobraźmy sobie mój pluggable compass_posted_on() funkcja w powyższym przykładzie nie jest pluggable. W temacie nadrzędnym wygląda to tak:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Aby go nadpisać, najpierw odłącz go za pomocą remove_action() funkcja, którą podłączysz do wp_head hak:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Następnie kodujesz nową funkcję do motywu podrzędnego o innej nazwie i zaczepiasz ją do tego samego zaczepu:

Ładowanie gist 1c3bb4d5435887fc5f12ea13ce42f4a4

Zrozumienie motywów rodziców i dzieci pomoże Ci je lepiej wykorzystać

Powyższy przewodnik pomoże Ci lepiej zrozumieć, co WordPress zrobi z kodem z motywu rodzica i dziecka, gdy używasz motywów potomnych. Pomoże Ci to rozwiązać sytuacje, w których oczekiwany kod nie jest używany. Pomoże Ci również napisać lepszy i bardziej wydajny kod w motywach podrzędnych.

Czy używasz motywów potomnych do zachowania zmian w witrynie po wydaniu aktualizacji? Jeśli tak, czy kiedykolwiek pomyliłeś się, próbując wprowadzić zmiany w plikach?

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…

WordPress Pingbacks & Trackbacks: Ultimate A-Z Guide

W artykule: Czym są Pingbacks i Trackbacks? Plus, dlaczego są ważneCzym Są…

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…