Hierarchia szablonów: mylona z index.php, front-page.php, home.php

36

Jestem naprawdę mylić z index.php, home.phpi front-page.php. W wielu przypadkach, mimo że miałem index.php, nadpisuję je front-page.php. Ale ostatnio dowiedziałem się o tym home.php.

  • Jaka jest różnica między home.phpi index.php?
  • Jaki jest idealny warunek do użycia home.phpniż index.php?
  • Jaki jest idealny warunek korzystania front-page.php?
  • Kiedy używam front-page.phpwtedy, jakie konkretne zadanie index.phpdla mnie wtedy robi?

Przeczytałem Hierarchię szablonów w Codex. Proszę nie mieszać mojego pytania z szablonami strony, rozumiem je, alHamduLILLAH.

Mayeenul Islam
źródło
1
Dostałem @rarst z tym: rarst.net/wordpress/front-page-logic . Może ci pomóc.
Mayeenul Islam

Odpowiedzi:

34

Logika na pierwszej stronie jest jedną z najbardziej mylących funkcji WordPressa i jest wyjątkowo trudna do wyjaśnienia i podsumowania. Jak wspomniałem w komentarzu, z tyłu spieszyłem nieświętą ilość czasu, aby zebrać za to moją zdradę logiki na pierwszej stronie .

Ale ponieważ jest to popularny wątek, pozwól mi odpowiedzieć na te bardzo szczegółowe pytania, które miałeś.

Jaka jest różnica między home.phpi index.php?

home.phpjest szablonem indeksu postów (archiwum rodzimego typu postów, co jest szczególnym przypadkiem w WP). WP podejmie próbę wyszukania indeksu postów, niezależnie od tego, czy są one wyświetlane w katalogu głównym witryny, czy na stronie poświęconej postom.

index.phpto catch-all szablon. Jest to ostateczny wybór we wszystkich gałęziach hierarchii szablonów i zostanie wybrany, gdy nic innego nie pasuje, zarówno dla archiwów, jak i pojedynczych widoków.

Można używać tylko indeksu postów home.php, ale wszystkie inne konteksty mogą i będą z niego korzystać index.php.

Jaki jest idealny warunek do użycia home.phpniżindex.php

Służy home.phpdo dostosowywania indeksu postów.

Używasz, index.phpaby zapewnić najbardziej ogólny szablon w swoim motywie, odpowiedni do wyświetlania czegokolwiek.

Niektóre motywy wybierają opcję pustą index.phpi zapewniają bardziej szczegółowe szablony dla wszystkich możliwych przypadków, więc nigdy nie trzeba jej używać.

Jaki jest idealny warunek korzystania front-page.php?

front-page.php jest używany do indeksowania postów na głównej lub statycznej stronie głównej, jeśli jest włączony.

Jest to szablon o wysokim priorytecie, więc jeśli motyw go zawiera, nie można wybrać dowolnego szablonu dla statycznej strony głównej. Z tego powodu prawie nigdy nie jest uwzględniony w publicznie wydanych motywach (co jest poprawne).

Najlepiej nadaje się do tego w prywatnych projektach, ponieważ jest łatwiejszy do skonfigurowania niż szablon strony.

Kiedy używam front-page.phpwtedy, jakie konkretne zadanie index.phpdla mnie wtedy robi?

index.phpJest jeszcze jeden haczyk wszystko szablon dla wszystkich pozostałych przypadkach.

Jeśli używasz statycznej strony początkowej (do której się front-page.phpto odnosi), wtedy strona postów spróbuje użyć, home.phpa następnie index.php.

Rarst
źródło
28

front-page.phpPlik jest strona przednia strona szablon. Będzie zawsze używany na stronie głównej witryny, niezależnie od tego, czy get_option( 'show_on_front' )jest ustawiony na pageczy posts.

Plik home.phpszablonu to szablon indeksu postów na blogu . Będzie zawsze używany do wyświetlania indeksu postów na blogu, niezależnie od tego, czy indeks postów na blogu jest wyświetlany na stronie głównej witryny, czy na innej stronie.

W przypadku, gdy oba front-page.phpi home.hppistnieje, a get_option( 'show_on_front' )jest ustawiony na posts(czyli, strona strona przednie wyświetla indeks blogach), to front-page.phpplik będzie mieć pierwszeństwo nad home.phpplikiem.

index.phpPlik jest domyślny szablon awaryjna dla wszystkich kontekstach w hierarchii szablonu . Jest on zawsze używany tylko wtedy, gdy dla bieżącego kontekstu nie istnieje bardziej szczegółowy plik szablonu.

Hierarchia szablonów strony głównej witryny jest następująca:

  • front-page.php
  • Jeśli 'page' == get_option( 'show_on_front' ): hierarchia stron
  • Jeśli 'posts' == get_option( 'show_on_front' ): blog publikuje hierarchię indeksów

Hierarchia szablonów indeksu postów na blogu jest następująca:

  • home.php
  • index.php

Hierarchia szablonów stron jest następująca:

  • Niestandardowy szablon strony
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php
Chip Bennett
źródło
Tak więc, jeśli mam rację, nie można użyć my-template-1szablonu, gdy strona główna jest ustawiona na najnowsze posty, ani użyć, my-template-2gdy strona jest ustawiona na stronę statyczną (bez kodowania)?
Jack Johansson
18

Wszystko to pochodzi z dokładnego zapoznania się z hierarchią szablonów .

home.php jest używany, jeśli:

  • Strona główna Twojej witryny jest ustawiona na wyświetlanie listy postów lub
  • Motyw ma home.phpplik

Jeśli ostatni warunek nie jest spełniony - tzn. Nie ma home.phppliku w motywie - index.phpzostanie załadowany.

front-page.php zostaną wykorzystane, jeśli:

Jeśli ostatni warunek nie jest spełniony - tzn. Nie ma front-page.phppliku w motywie - index.phpzostanie załadowany.

W podsumowaniu

Jeśli chcesz dostosować swoją listę postów, użyj home.php.
Jeśli chcesz dostosować statyczną stronę główną, użyj front-page.php.

Pat J
źródło
2
home.phpbędą używane do indeksu postów na blogu, niezależnie od lokalizacji. Jeśli strona główna jest ustawiona na wyświetlanie indeksu postów na blogu, home.phpzostanie użyta (jeśli front-page.phpnie istnieje).
Chip Bennett,
10

W skrócie:

  • index.php jest tylko szablonem zastępczym, na wypadek gdyby nie znaleziono odpowiedniego szablonu
  • home.php służy do bloga (lista ostatnich postów)
  • front-page.php służy do strony docelowej

Uniwersalny index.phpszablon

Plik index.phpszablonu jest szablonem rezerwowym. Jest stosowany jako ostateczność, gdy nie jest dostępny żaden bardziej odpowiedni szablon. Na przykład, jeśli nie masz front-page.phpani a, home.phpto index.phpzostanie użyte. Odnosi się to również w przypadku brakujących archive.phplub single.phpi tak dalej.

Odnośnie front-page.phpVShome.php

Teraz różnica między front-page.phpi home.phpszablonami polega na tym, że front-page.phpjest używany, jak sama nazwa wskazuje, jako główna strona główna witryny, podczas gdy home.phpma być główną stroną sekcji Blog .

Jaki szablon będzie używany dla strony docelowej mojej witryny?

front-page.phpSzablon, jeśli jest obecny, zostaną wykorzystane na głównej stronie głównej witryny (na przykład http://www.example.com/). Jeśli nie jest obecny, home.phpzostanie użyty zamiast niego. Jeśli brakuje zarówno plików szablonu, jak front-page.phpi szablonu, zostanie użyty szablon rezerwowy.home.phpindex.php

Jaki szablon będzie używany na mojej stronie bloga?

WordPress pozwala ci mieć stronę „Blog” (która zawiera listę ostatnich postów) na innej stronie niż strona docelowa (np http://www.example.com/blog/.). Jeśli tak jest w przypadku Twojej witryny, strona blogu zawsze będzie używać home.phpszablonu. Jeśli home.phpnie istnieje, index.phpzostanie użyty szablon rezerwowy.

Jak skonfigurować stronę docelową i stronę bloga?

Aby skonfigurować zawartość wyświetlaną na stronie głównej, przejdź do Administratora WordPress , w obszarze Narzędzia> Czytanie , możesz skonfigurować „ Wyświetlanie strony głównej ”, aby wyświetlać stronę statyczną lub swoje najnowsze posty.

W przypadku, gdy zdecydujesz się wyświetlić stronę statyczną na pierwszej stronie, możesz również ustawić, która strona ma być używana jako symbol zastępczy strony Blog (która będzie korzystać z home.phpszablonu):

wprowadź opis zdjęcia tutaj

zapytał 12 lutego '12
źródło
3

zaczerpnięte z hierarchii szablonów Wordpress

Wyświetlanie strony głównej

Domyślnie WordPress ustawia na stronie głównej witryny wyświetlanie najnowszych postów na blogu. Ta strona nazywa się indeksem postów na blogu. Możesz także ustawić wyświetlanie postów na blogu na osobnej stronie statycznej. Plik szablonu home.php służy do wyświetlania indeksu postów na blogu, niezależnie od tego, czy jest używany jako strona główna, czy na osobnej stronie statycznej. Jeśli home.php nie istnieje, WordPress użyje index.php.

  1. home.php
  2. index.php

Uwaga: Jeśli istnieje plik front-page.php, zastąpi szablon home.php.

Wyświetlanie strony głównej

Plik szablonu front-page.php służy do renderowania strony głównej witryny, niezależnie od tego, czy strona główna wyświetla indeks postów na blogu (wspomniany powyżej), czy stronę statyczną. Szablon strony głównej ma pierwszeństwo przed szablonem indeksu postów na blogu (home.php). Jeśli plik front-page.php nie istnieje, WordPress użyje plików home.php lub page.php w zależności od konfiguracji w Ustawienia → Czytanie. Jeśli żaden z tych plików nie istnieje, użyje pliku index.php.

1. front-page.php - Używany zarówno do „twoich najnowszych postów”, jak i „strony statycznej” ustawionej na stronie głównej wyświetla sekcję Ustawienia → Czytanie.

2. home.php - Jeśli WordPress nie może znaleźć strony głównej.php, a „sekcja twoich najnowszych postów” jest ustawiona w sekcji wyświetlania strony głównej, wyszuka stronę domową.php. Dodatkowo WordPress wyszuka ten plik, gdy strona postów zostanie ustawiona w sekcji wyświetlania strony głównej.

3. page.php - Gdy „strona główna” jest ustawiona w sekcji wyświetlanej na stronie głównej.

4. index.php - Gdy „twoje najnowsze posty” są ustawione na pierwszej stronie, wyświetla sekcję, ale home.php nie istnieje lub gdy ustawiona jest strona główna, ale page.php nie istnieje.

Jak widać, istnieje wiele zasad dotyczących ścieżki WordPress. Korzystanie z powyższej tabeli jest najlepszym sposobem na określenie, co WordPress wyświetli.

Szablon hierarchii szablonów: Hierarchia szablonów Wordpress

samix73
źródło
2

Postanowiłem przetestować, który szablon jest używany dla każdej z poniższych stron, gdy ustawione są różne opcje wyświetlania strony głównej.

  • przyklad.net
  • example.net/home/
  • example.net/blog/

Wyniki są dość długie, ale mogą być wykorzystane jako odniesienie lub ściągawka.

Wyświetla się strona główna

Źródło: Czym różnią się szablony front-page.php i home.php w WordPress?

Uwaga dla redaktora: Próbowałem tutaj skopiować i wkleić tabele, ale zamiast HTML wymagany jest format Markdown. Jeśli to możliwe, przejdź na obniżkę cen.

henrywright
źródło