Создание пользовательского шаблона страницы блога правильным способом

4 янв. 2017 г., 05:04:23
Просмотры: 95.1K
Голосов: 17

Я хочу создать новый пользовательский шаблон страницы для отображения записей блога. Я понимаю, что когда вы назначаете страницу для отображения записей через Настройки > Чтение, WordPress автоматически назначает шаблон home.php для отображения контента этой страницы (а именно записей). При этом опция выбора шаблона страницы в редакторе страницы исчезает.

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

Я мог бы сделать это не назначая страницу для отображения блога в Настройки > Чтение, а затем позволить администратору выбирать конкретный шаблон через меню Атрибуты страницы в редакторе. Но согласно https://make.wordpress.org/themes/2014/06/28/correct-handling-of-static-front-page-and-custom-blog-posts-index-template/, это НЕПРАВИЛЬНЫЙ способ.

Я пытался искать решения в Google, но все, что нахожу - это рекомендации по использованию плагинов. Может кто-то подскажет полезные ресурсы?

1
Комментарии

Думаю, исходная проблема уже давно решена, но я просто хотел сказать, что изучение исходного кода плагинов многому меня научило. Если вы найдёте плагин в каталоге WP.org, вы можете перейти на вкладку разработчиков, чтобы просмотреть код прямо в браузере и понять, как он работает.

rtpHarry rtpHarry
12 февр. 2020 г. 18:00:47
Все ответы на вопрос 3
1
19

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

Разработчики тем имеют три варианта при решении этого вопроса, один из которых (#2 ниже) вы упомянули.

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

    • Плюсы: быстро и просто
    • Минусы: подвержено ошибкам и противоречит принципам объектно-ориентированного программирования
  2. Создание шаблона страницы для индекса блога. Как вы сказали, многие разработчики тем выбирают этот путь, потому что это быстрый способ получить контроль над индексом блога и даже позволяет экспериментировать с разными шаблонами индекса блога (что полезно при разработке универсальной темы).

    • Плюсы: Универсальность, возможность создания мощной темы
    • Минусы: вы теряете возможность использовать нативную функциональность WordPress, связанную с индексом блога.
  3. Создание файлов front-page.php, home.php и index.php в вашей теме. front-page будет домашней страницей темы. home будет использоваться по умолчанию для индекса блога, а index станет резервным файлом для всех шаблонов.

    • Плюсы: Чистота и полное использование нативных объектов и методов WordPress
    • Минусы: Ограничения WordPress: не идеально подходит для многих современных тем с богатыми возможностями

Лично я предпочитаю вариант #2, потому что большинство моих проектов на WordPress в последнее время — это не просто блоги: это целые сайты с глубокой информационной архитектурой и сложной интерактивностью.

17 июл. 2018 г. 23:30:57
Комментарии

Документация по этой функциональности: https://developer.wordpress.org/themes/basics/template-hierarchy/#home-page-display

Pixelsmith Pixelsmith
10 янв. 2020 г. 20:21:11
3

В своем ответе я затрону несколько аспектов. :)

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

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

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

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

4 янв. 2017 г. 05:28:52
Комментарии

Спасибо за ответ. Я знаю, как создавать шаблоны страниц для отдельных страниц/записей на основе иерархии, но не могу понять, как предоставить варианты шаблонов для "Главной страницы блога", которая использует home.php (использую ту же терминологию, что и в предоставленной вами схеме). Это настраивается, когда администратор выбирает страницу для отображения записей в Панель управления → Настройки → Чтение. После этого странице назначаются шаблоны home.php/index.php. Я не могу найти способ создать альтернативный шаблон без отмены назначения страницы в Панель управления → Настройки → Чтение.

Ryan Coolwebs Ryan Coolwebs
4 янв. 2017 г. 07:26:27

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

iguanarama iguanarama
4 янв. 2017 г. 09:23:30

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

Ryan Coolwebs Ryan Coolwebs
4 янв. 2017 г. 09:44:14
2

Хорошо, вы хотите создать свою собственную шаблонную страницу для отображения записей блога, верно?

Тогда сделайте следующее: создайте PHP-файл с именем blog-template.php

Внутри этого файла в самом начале добавьте этот код:

<?php 
/*
* Template Name: Записи блога
*/
?>

Затем ниже этого кода вставьте весь ваш код из файлов index.php или home.php в этот новый файл, сохраните его. Теперь создайте страницу через админ-панель, например, назовите её "Блог". Справа выберите шаблон страницы, который мы только что создали — Записи блога из выпадающего списка шаблонов.

Опубликуйте страницу, и теперь у вас есть собственная страница для отображения записей.

Дайте знать, если вам что-то ещё понадобится.

4 янв. 2017 г. 09:40:39
Комментарии

Хорошо, вы просто перефразировали решение, которое автор вопроса явно указал как неправильное ;) Создание шаблона страницы и использование его в качестве индексной страницы блога — не самый лучший подход, я думаю.

Krzysiek Dróżdż Krzysiek Dróżdż
18 мар. 2018 г. 19:27:16

Это не совсем неправильно как таковое, просто автор вопроса не понял, почему люди обычно делают именно так

Orun Orun
17 июл. 2018 г. 23:32:18