Przeglądając dokumentację Wordpress , is_page_template()
porównuje się ją z „nazwą szablonu”, jeśli taka jest podana.
Mam szablon przechowywany w page-homepage.php
nazwie Homepage
:
/*
* Template Name: Homepage
* Description: The template for displaying the homepage
*/
Mam kod, który chciałbym uruchomić w swoich funkcjach. Php, gdy korzystam z tego szablonu:
if (is_page_template('Homepage')) {
...
Ale to nie jest uruchamiane, gdy jestem na stronie, która używa tego szablonu.
Kiedy patrzę na kod, który wykonuje Wordpress is_page_template()
, wygląda na to, że faktycznie sprawdza nazwę dokumentu, a nie nazwę szablonu ...?
function is_page_template( $template = '' ) {
$page_template = get_page_template_slug( get_queried_object_id() );
if ( $template == $page_template )
return true;
W moim przypadku wydaje się, że $page_template
jest page-homepage.php
- nie nazwę szablonu, jak dokumentacja sugeruje ...?
czy robię coś źle?
page-template
codex
Django Reinhardt
źródło
źródło
Odpowiedzi:
Twój stan powinien być zapisany w następujący sposób:
Wierzę, że zamieszanie jest wynikiem dwóch rzeczy:
is_page_template()
pokazujeget_page_template_slug()
funkcję w jej rdzeniu. Ta funkcja w rzeczywistości zwraca nazwę pliku, a nie szablon ślimaka. https://codex.wordpress.org/Function_Reference/get_page_template_slugPodczas określania argumentu dla
is_page_template()
funkcji (jak w powyższym przykładzie) ścieżka do pliku jest względna do katalogu głównego kompozycji.Ta funkcja nie będzie działać w pętli.
źródło
get_page_template_slug()
tak naprawdę nie zwraca ślimaka!Myślę, że najlepszą rzeczą do powiedzenia jest sprawdzenie nazwy PLIKU, a w twoim przypadku będzie to page-homepage.php. więc:
Inną rzeczą do przemyślenia jest to, czy plik szablonu jest faktycznie przechowywany w innym folderze w kompozycji. Czytaj więcej
Jeszcze jedna rzecz:
Template Name: Homepage
to, co jest używane do identyfikacji szablonu podczas tworzenia strony lub postu.źródło
page-templates/page-homepage.php
różni się od szablonu w katalogu głównym motywu.