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

9

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

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

Я мог бы сделать это, не назначая страницу для отображения блогов в области « Настройки»> «Чтение», а затем позволяя пользователю-администратору назначать конкретный шаблон странице с помощью меню « Атрибуты страницы» при редактировании страницы, но в соответствии с https://make.wordpress.org. / themes / 2014/06/28 / правильная обработка статической передней страницы и настраиваемого шаблона блога posts_index / , это НЕПРАВИЛЬНЫЙ способ .

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

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

Ответы:

8

Не забывайте, что 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 в наши дни - это не просто блоги: это целые сайты с глубокой информационной архитектурой и сложной интерактивностью.

Орун
источник
Документация для этой функции: developer.wordpress.org/themes/basics/template-hierarchy/...
Pixelsmith
0

Собираюсь охватить несколько основ в моем ответе. :)

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

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

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

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

iguanarama
источник
1
Спасибо за Ваш ответ. Я знаю, как создавать шаблоны страниц для страниц / сообщений на основе иерархии, но я не могу найти способ дать опции шаблона для "Индексной страницы блогов", которая использует home.php (используя ту же терминологию, что и диаграмма Вы предоставили). Это устанавливается, когда пользователь с правами администратора выбирает страницу для отображения сообщений в Личном кабинете> Настройки> Чтение. Затем назначается страница home.php / index.php. Я не могу найти способ сделать альтернативный шаблон, не назначив страницу в Dashboard> Settings> Reading.
Райан Кулвебс
@RyanCoolwebs Вам, вероятно, потребуется добавить в свою тему параметр администратора, который позволяет выбирать между стилями отображения для индексной страницы постов блога, а затем отредактировать home.php, чтобы прочитать значение параметра и отобразить соответствующий вариант страницы.
iguanarama
Да, я думаю, что использование функции настройщика - это, вероятно, лучший способ сделать это. Я могу проверить параметры настройщика, а затем получить соответствующую часть шаблона.
Райан Coolwebs
0

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

Затем идите по этому пути, создайте php-файл с именем blog-template.php

Внутри этого файла поместите этот код поверх каждой вещи.

<?php 
/*
* Template Name: Blog Post
*/
?>

Затем, ниже приведенного выше кода, поместите весь свой код со index.php/home.phpстраницы на эту выше страницу, сохраните файл и теперь создайте страницу dashboard, скажем, так как имя этой страницы "Blog"сейчас справа, chose page templateкоторое мы только что создали, как Blog Postиз выпадающего списка шаблонов. ,

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

Дайте мне знать, если что-то еще нужно.

Акрам уль хак
источник
Итак, вы только что перефразировали решение, которое OP явно указал как неправильное;) Думаю, создание шаблона страницы и использование его в качестве индекса блога - не лучший подход.
Krzysiek Dróżdż
По сути, это не так уж и плохо, просто ОП неправильно понял, почему люди так поступают
Орун