Иметь домашнюю страницу выглядят иначе, чем index.php без статической страницы

У меня есть тема, где я хочу, чтобы домашняя страница выглядела иначе, чем остальные списки сообщений. Я использовал home.php для создания домашней страницы и предположил, что при нажатии на « Старые записи» /page/2 будет использоваться index.php но это кажется неправильным.

Есть ли комбинация файлов тем, которые могут это сделать? или мне нужно использовать статическую страницу для моей домашней страницы с содержимым home.php .

Моя интерпретация кода была:

  • example.com/ -> home.php
  • example.com/page/2 -> index.php
  • example.com/category/foo/ -> archive.php

Я думаю, что у вас есть недоразумение, что домашняя страница ( индексная страница ) находится в контексте WordPress. Домашняя страница – это главная страница сайта, по умолчанию это будет выглядеть как example.com , и любая страница с постраничной страницей, полученная с этой домашней страницы. Таким образом, example.com/page/2 также считается главной страницей. Короче говоря, любая страница, где is_home() возвращает true, будет домашней страницей.

По умолчанию index.php будет использоваться для главной страницы. home.php будет использоваться, если доступно, для страницы блога, если она установлена, когда установлена ​​статическая передняя страница.

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

ПРИМЕР:

Давайте создадим свой собственный шаблон и назовем его index-home.php . Это соглашение об именах уникально и не существует в нормальной иерархии, поэтому мы здесь сохраняем. Теперь нам просто нужно включить его

 add_filter( 'home_template', function ( $template ) { // Only target page one if ( is_paged() ) return $template; // We are on page one of the homepage, lets locate and include our template $locate_template = locate_template( 'index-home.php' ); if ( !$locate_template ) return $template; return $locate_template; }); 

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

ПРИМЕР:

 if ( !is_paged() && is_home() ) { // Add code etc for page one homepage } else { // Add code etc for all oher pages } 

Как раз последнее замечание, основной запрос все равно будет выполняться нормально. Если вам нужно изменить это, вам придется использовать pre_get_posts для изменения поведения основного запроса