get_page_template()
można zastąpić przez page_template
filtr. Jeśli twoja wtyczka jest katalogiem z szablonami jako plikami, to tylko kwestia przekazania nazw tych plików. Jeśli chcesz je utworzyć „w locie” (edytować je w obszarze administracyjnym i zapisać je w bazie danych?), Możesz zapisać je w katalogu pamięci podręcznej i odwoływać się do nich lub podłączyć template_redirect
i zrobić szalone eval()
rzeczy .
Prosty przykład wtyczki, która „przekierowuje” do pliku w tym samym katalogu wtyczek, jeśli spełnione jest określone kryterium:
add_filter( 'page_template', 'wpa3396_page_template' );
function wpa3396_page_template( $page_template )
{
if ( is_page( 'my-custom-page-slug' ) ) {
$page_template = dirname( __FILE__ ) . '/custom-page-template.php';
}
return $page_template;
}
Przesłonięcie
get_page_template()
to tylko szybki hack. Nie pozwala na wybranie szablonu z ekranu administratora, a informacja o stronie jest na stałe zakodowana we wtyczce, więc użytkownik nie ma możliwości dowiedzenia się, skąd pochodzi szablon.Preferowanym rozwiązaniem byłoby wykonanie tego samouczka, który pozwala zarejestrować szablon strony w zapleczu z wtyczki. Następnie działa jak każdy inny szablon.
źródło
Tak to mozliwe. Uważam, że ta przykładowa wtyczka jest bardzo pomocna.
Innym podejściem, które przyszło mi do głowy, jest użycie WP Filesystem API do utworzenia pliku szablonu do kompozycji. Nie jestem pewien, czy jest to najlepsze podejście, ale jestem pewien, że to działa!
źródło
Żadna z poprzednich odpowiedzi nie działała na moją. Tutaj możesz wybrać swój szablon w Wordpress admin. Wystarczy umieścić go w głównym pliku wtyczki php i zmienić
template-configurator.php
według nazwy szablonuźródło