Иерархия шаблонов: перепутано с index.php, front-page.php, home.php


36

Я действительно смущен index.php, home.phpи front-page.php. Во многих случаях, даже если у меня есть index.php, я перезаписываю его front-page.php. Но недавно я узнал о home.php.

  • Какая разница между home.phpи index.php?
  • Какое идеальное условие для использования, home.phpчем index.php?
  • Какое идеальное условие для использования front-page.php?
  • Когда я использую front-page.phpто, что конкретное задание index.phpделает для меня тогда?

Я прочитал иерархию шаблонов в Кодексе. Пожалуйста, не смешивайте мой вопрос с шаблонами страниц, я понимаю их, alHamduLILLAH.


1
Получил @rarst с этим: rarst.net/wordpress/front-page-logic . Может помочь вам.
Mayeenul Ислам

Ответы:


34

Логика главной страницы - одна из самых запутанных функций в WordPress, и ее чрезвычайно сложно объяснить и обобщить. Как упомянуто в комментарии, когда я возвращался, я потратил нечестивое количество времени, чтобы собрать для этого свою шпаргалку логики на первой странице .

Но так как это популярная тема, позвольте мне ответить на эти очень конкретные вопросы, которые у вас были.

Какая разница между home.phpи index.php?

home.phpявляется шаблоном для индекса сообщений (архив с собственным типом записей Post, который является частным случаем в WP). WP попытается найти индекс сообщений, независимо от того, отображаются ли они в корне сайта или на отдельной странице сообщений.

index.phpэто ловить - весь шаблон. Это окончательный выбор во всех ветвях иерархии шаблонов, и он будет выбран, когда ничего не подходит, как для архивов, так и для единичных представлений.

Можно использовать только индекс сообщений home.php, но все остальные контексты могут и будут использовать index.php.

Какое идеальное условие для использования, home.phpчемindex.php

Вы используете home.phpдля настройки индекса сообщений.

Вы используете, index.phpчтобы предоставить наиболее общий шаблон в вашей теме, подходящий для отображения чего угодно.

Некоторые темы выбирают пустые index.phpи обеспечивают более конкретные шаблоны для всех возможных случаев, поэтому их никогда не нужно использовать.

Какое идеальное условие для использования front-page.php?

front-page.php используется для индексирования сообщений на корневой или статической главной странице, если включено.

Это шаблон с высоким приоритетом, поэтому, если у него есть тема, вы не можете выбрать произвольный шаблон для статической главной страницы. По этой причине он почти никогда не включается в общедоступные темы (что правильно).

Лучше всего его использовать в частных проектах, так как его легче настроить, чем шаблон страницы.

Когда я использую front-page.phpто, что конкретное задание index.phpделает для меня тогда?

index.phpпо- прежнему является универсальным шаблоном для всех остальных случаев.

Если вы используете статическую титульную страницу (к которой front-page.phpбудет применяться), то ваша страница постов будет пытаться использовать, home.phpа затем index.php.


28

front-page.phpФайл является сайтом первой страницы шаблона. Он всегда будет использоваться на главной странице вашего сайта, независимо от того get_option( 'show_on_front' ), установлен он pageили posts.

home.phpФайл шаблона является блог сообщений индекса шаблона. Он всегда будет использоваться для отображения индекса сообщений в блоге, независимо от того, отображается ли индекс сообщений в блоге на главной странице сайта или на другой странице.

В случае, когда front-page.phpи home.hppсуществует, и для get_option( 'show_on_front' )него установлено значение posts(т. Е. На первой странице сайта отображается индекс сообщений блога), front-page.phpфайл будет иметь приоритет над home.phpфайлом.

Этот index.phpфайл является шаблоном по умолчанию для всех контекстов в иерархии шаблонов . Он используется только в том случае, если для текущего контекста не существует более конкретного файла шаблона.

Иерархия шаблонов для главной страницы сайта :

  • front-page.php
  • Если 'page' == get_option( 'show_on_front' ): иерархия страниц
  • Если 'posts' == get_option( 'show_on_front' ): иерархия индексирования постов в блоге

Иерархия шаблонов для индекса блога :

  • home.php
  • index.php

Иерархия шаблонов для страниц :

  • Пользовательский шаблон страницы
  • page-{slug}.php
  • page-{id}.php
  • page.php
  • index.php

Итак, если я правильно понял, невозможно использовать my-template-1шаблон, когда на первой странице установлены последние сообщения, и использовать, my-template-2когда на передней стороне установлена ​​статическая страница (без кодирования)?
Джек Йоханссон

18

Все это происходит из тщательного прочтения иерархии шаблонов .

home.php используется, если:

  • На главной странице вашего сайта настроено отображение списка сообщений, или
  • И у темы есть home.phpфайл

Если последнее условие не выполнено, т. home.phpЕ. В теме нет файла, то оно index.phpбудет загружено.

front-page.php будет использоваться, если:

Если последнее условие не выполнено, т. front-page.phpЕ. В теме нет файла, то оно index.phpбудет загружено.

В итоге

Если вы хотите настроить свой список сообщений, используйте home.php.
Если вы хотите настроить статическую домашнюю страницу, используйте front-page.php.


2
home.phpбудет использоваться для индекса блога, независимо от местоположения. Если на главной странице задано отображение индекса сообщений в блоге, то home.phpбудет использоваться (если front-page.phpон не существует).
Чип Беннетт

10

Короче:

  • index.php является резервным шаблоном, только если соответствующий шаблон не найден
  • home.php используется для блога (список последних сообщений)
  • front-page.php используется для целевой страницы

Универсальный index.php шаблон

index.phpФайл шаблон представляет собой шаблон запасного варианта. Он используется в качестве крайней меры, когда другой более подходящий шаблон недоступен. Например, если у вас нет front-page.phpни того, home.phpто index.phpбудет использоваться. Это также верно для пропавших без вести archive.phpилиsingle.php и так далее.

относительно front-page.php VShome.php

Теперь разница между front-page.phpи home.phpшаблонов является то , что front-page.phpиспользуется, как предполагает его название, как основной передней странице сайта, в то время как home.phpпредполагается, является домом блога раздела.

Какой шаблон будет использоваться для целевой страницы моего сайта?

front-page.phpШаблон, если он присутствует, будет использоваться для главной главной страницы сайта (например http://www.example.com/). Если нет, то home.phpбудет использоваться вместо. Если оба файла front-page.phpи home.phpшаблон отсутствуют, тоindex.php будет использован запасной шаблон.

Какой шаблон будет использоваться для моей страницы блога?

WordPress позволяет вам иметь страницу «Блог» (в которой будут перечислены последние сообщения) на странице, отличной от целевой страницы (например http://www.example.com/blog/). Так что, если это так на вашем сайте, то страница блога всегда будет использовать home.phpшаблон. Если home.phpне существует, index.phpбудет использован запасной шаблон.

Как настроить целевую страницу и страницу блога?

Чтобы настроить, какой контент показывать на первой странице, перейдите к WordPress Admin , в разделе « Инструменты»> «Чтение» вы можете настроить « Отображение передней страницы » для отображения статической страницы или ваших последних сообщений.

В случае, если вы решите отображать статическую страницу на первой странице, у вас также есть возможность указать, какую страницу использовать в качестве заполнителя для страницы блога (которая будет использовать home.phpшаблон):

введите описание изображения здесь


3

взяты из иерархии шаблонов Wordpress

Дисплей домашней страницы

По умолчанию WordPress устанавливает домашнюю страницу вашего сайта для отображения ваших последних сообщений в блоге. Эта страница называется индексом блога. Вы также можете настроить отображение сообщений в своем блоге на отдельной статической странице. Файл шаблона home.php используется для отображения индекса сообщений блога, независимо от того, используется ли он в качестве главной страницы или на отдельной статической странице. Если home.php не существует, WordPress будет использовать index.php.

  1. home.php
  2. index.php

Примечание. Если файл front-page.php существует, он переопределит шаблон home.php.

Дисплей передней страницы

Файл шаблона front-page.php используется для отображения главной страницы вашего сайта, независимо от того, отображает ли на главной странице индекс сообщений в блоге (упомянутый выше) или статическую страницу. Шаблон главной страницы имеет приоритет над шаблоном индекса публикаций в блоге (home.php). Если файл front-page.php не существует, WordPress будет использовать файлы home.php или page.php в зависимости от настроек в меню «Настройки» → «Чтение». Если ни один из этих файлов не существует, он будет использовать файл index.php.

1. front-page.php - используется как для «ваших последних сообщений», так и для «статической страницы», как установлено на первой странице, в разделе «Настройки» → «Чтение».

2. home.php - если WordPress не может найти front-page.php и в разделе «Отображение главной страницы» задано «ваши последние сообщения», он будет искать home.php. Кроме того, WordPress будет искать этот файл, когда страница постов задана в разделе отображения главной страницы.

3. page.php - если в разделе «Отображение первой страницы» установлена ​​« первая страница».

4. index.php - Когда в разделе «Первая страница» отображается «Ваши последние сообщения», но home.php не существует, или если установлена ​​первая страница, но page.php не существует.

Как видите, существует множество правил, по которым WordPress идет по пути. Использование диаграммы выше - лучший способ определить, что будет отображать WordPress.

Шаблон иерархической диаграммы: Иерархия шаблонов WordPress


2

Я решил проверить, какой шаблон используется для каждой из следующих страниц, когда установлены различные параметры отображения на передней странице.

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

Результаты довольно длинные, но могут использоваться как справочная или шпаргалка.

Отображение главной страницы

Источник: Чем отличаются шаблоны front-page.php и home.php в WordPress?

Примечание для редактора: я попытался скопировать и вставить таблицы здесь, но вместо HTML требуется формат уценки. Пожалуйста, конвертируйте в уценку, если можете.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.