Как создать редактируемые блоки текста для главной страницы?
Я создаю сайт на WordPress. Он не будет похож на блог или обычный WP-сайт. Просто веб-сайт, где WordPress выступает в качестве панели управления, где клиент может редактировать текстовые блоки.
Вопрос:
- Как я могу разместить блоки текста в моём шаблоне, которые пользователи смогут редактировать из панели администратора?
Допустим, что-то вроде этого:
Как сделать редактируемыми 3 верхних блока (о нас, миссия, почему мы...) через панель администратора? Или определенный текст в шапке или подвале сайта.
Нужно ли мне создавать 3 записи и ссылаться на них в шаблоне через get_post($id)
?
Какой способ будет наилучшим?

У вас есть несколько вариантов в зависимости от того, какой уровень гибкости вы хотите предоставить редактору текстовых блоков.
Создайте пользовательский цикл с помощью
WP_Query
. Смотрите наши примеры и страницу в Кодексе по использованию. Затем выводите анонсы страниц, к которым привязаны эти блоки.
Здесь можно использовать вложения (изображения) и полное форматирование.Используйте виджеты. Смотрите наши примеры и страницу в Кодексе. Ограниченное форматирование, так как визуальный редактор плохо работает в формах виджетов.
Используйте пользовательское меню навигации и выводите описание.
Вы можете комбинировать эти методы: используйте виджеты для шапки и подвала, WP_Query
и анонсы страниц или записей для остальных блоков.

Думаю, я проверю правильность вашего решения. Просто потому что вы выполняете остальные части и суммируете их. Как насчёт i18n здесь? Есть ли проблемы? И для пункта "1." вы рекомендуете использовать POSTS или PAGES? И конкретную страницу/запись для этого текстового отрывка, или целую страницу "О нас" со всем содержимым и выводом на главной только определённой части этой полной страницы?

А для решения пункта "1.", что если клиент удалит запись/страницу, которую вы использовали для ссылки на текстовый отрывок из админ-панели? Потому что вы по сути модифицируете WP_Query, например, post_id=3, верно?

Запрашивайте конкретный meta-ключ записи, или заголовки, или авторов. Но не запрашивайте ID записей, они могут измениться в любой момент. И если записей нет, просто ничего не показывайте. Клиент должен иметь возможность контролировать, какой контент отображается, а какой нет.

То есть ты предлагаешь создать запись типа POST с названием "О нас", а в теме модифицировать WP_Query через post_title = "О нас" (или что-то в этом роде) и вывести the_content() в этот DIV, верно? Тогда у меня будет страница "О нас", и я смогу создать ссылку на неё, например, в навигационной панели? Я также видел, как это можно сделать через виджет, как ты показывал в ответе. Я могу расширить класс Widget, чтобы получить по сути текстовое поле с заголовком... но без форматированного текста, и это немного сложно в использовании и даже реализации... не так ли?

Мои пять копеек:
- если ваш редактор страниц имеет доступ администратора и может редактировать виджеты, вы можете создать зону виджетов для каждого из этих элементов и предоставить соответствующий виджет для каждого
- если у вашего редактора страниц нет доступа администратора, например, у него роль редактора или автора, то он не сможет редактировать виджеты для их обновления; используйте произвольные поля на странице. Вы можете использовать для этого обычные произвольные поля или установить плагин Advanced Custom Fields.

Для единичных, разовых элементов контента на главной странице вы можете рассмотреть возможность использования виджетов. Зарегистрируйте "сайдбар" в файле функций, а затем выведите этот сайдбар в шаблоне главной страницы. Перетащите текстовые виджеты в этот сайдбар — и готово.
Для ленты новостей используйте записи (Posts) или пользовательские типы записей (custom post types). Содержимое шапки (Header) и подвала (Footer) зависит от того, что именно вы хотите в них разместить.

Несколько месяцев назад мне пришлось делать нечто подобное при разработке WordPress. Самый простой способ, который я нашел — использовать плагин под названием Spots.
Описание
Управляйте небольшими фрагментами текста, которые нужны на вашем сайте WordPress и в виджетах. Забудьте о текстовом виджете.
Создайте "спот" через админ-панель, добавьте контент, а затем вставьте тег 'Spot' в ваш код.

Еще один отличный способ реализации — использование плагина Advanced Custom Fields. Можно создать страницу настроек (Options page) и централизованное место под названием, например, Главная, где пользователи смогут редактировать эти блоки. При использовании ACF также можно предоставить возможность добавлять практически любой контент, с более гибким контролем над форматированием — например, повторители для изображений, текстовых блоков и т. д.

Дополняя прекрасные ответы моих коллег, где упоминается:
- важность Виджетов
- обширная документация в Кодексе
- использование бесплатных Плагинов для упрощения задач и добавления функциональности на сайт
- использование этого Stack в качестве источника глубокой информации
Я добавлю, что у вас есть множество Бесплатных Тем.
И многие из них предоставляют Страницу Настроек, где вы можете настроить внешний вид и содержание многих частей сайта (например, шапку и подвал).
Существуют Маркетплейсы, где вы найдёте темы полностью упакованные функциями. Но это не всегда хорошо. В отличие от WordPress.org, стандарты кодирования не всегда соблюдаются в этих темах. И иногда это может вызвать серьёзные проблемы.
Пожалуй, самый известный — это ThemeForest, и они недавно предприняли шаги для улучшения качества продаваемых там продуктов.
Также есть Дома Тем, такие как Woo, Elegant Themes, Graph Paper Press, и многие другие, где код выполнен так же качественно, как и дизайн.
Ещё есть Фреймворки Тем. О них даёт обзор эта статья.
Что бы вы ни выбрали, избегайте сомнительных поставщиков Тем.
