Kilka bardzo dobrych wstępnych odpowiedzi tutaj.
Zasadniczo get_template_part()
umożliwia twórcom motywów ustawienie kolejności specyficzności plików szablonów. Pomyśl o tym podobnie do specyficzności, ponieważ dotyczy selektorów CSS. Projektując coś, chcesz zacząć od absolutnego minimum specyficzności, aby można go było łatwo zastąpić w częściach projektu, które wymagają indywidualnej uwagi.
Na przykład projektujesz bloga i tworzysz plik loop.php , który działa dobrze do oznaczania postów. Ale planujesz z wyprzedzeniem i wywołujesz go później w plikach szablonów z dodatkowymi specyfikacjami kontekstu - powiedzmy, na stronie indeksu, dzwonisz get_template_part( 'loop', 'index' );
, na jednym szablonie, dzwonisz get_template_part( 'loop', 'single' );
, na stronach archiwum, dzwonisz get_template_part( 'loop', 'archive' );
i tak dalej. Ułatwia to późniejszą drogę, gdy zdecydujesz się oznaczyć pętlę na swoich stronach archiwalnych inaczej niż na stronie głównej: po prostu utwórz szablon loop-archive.php i będzie on używany zamiast ogólnej pętli.php .
Ale magia get_template_part()
tkwi w funkcji locate_template()
, która najpierw sprawdza katalog motywów, a następnie katalog macierzysty (jeśli taki istnieje) dla pliku o nazwie. Jest to bardzo przydatne do tworzenia wtyczek. W jednej z moich wtyczek definiuję niestandardowy typ postu i utworzyłem plik szablonu pętli dla tego niestandardowego typu postu w moim katalogu wtyczek. Ale ... Chcę zezwolić, aby motywy korzystające z mojej wtyczki zastępowały znaczniki, jeśli tak wybiorą. To tam locate_template()
naprawdę działa cuda.
locate_template($template_names, $load = false, $require_once = true )
wyszuka każdą z nazw w tablicy $ template_names w katalogu styles styles, a następnie w katalogu szablonów. Przekazanie „true” jako argumentu $ load oznacza, że będzie wymagał pierwszego znalezionego pliku i zwróci pusty ciąg, jeśli nie zostanie znaleziony plik szablonu. Więc mogę zrobić coś takiego w mojej wtyczce:
if ( '' === locate_template( 'loop-mycustomposttype.php', true, false ) )
include( 'loop-mycustomposttype.php' );
... co, mam nadzieję, powinno ułatwić twórcom motywów dostosowanie mojej wtyczki poprzez dołączenie do motywu pliku o nazwie loop-mycustomposttype.php .