Когда я просматривал последние темы блоков на WordPress.org, я наткнулся на новую фавориту: Bai. Типографика была подходящей для тех, кто склонен писать длинный контент. Кроме того, он имеет встроенный темный режим, который не заставлял меня отрывать глаза от их глазниц. Я планировал просмотреть его, но мне было нечего сказать. Это просто прочный дизайн без особых дополнительных функций.
Однако в конкретной тестовой среде, которую я настроил, одна часть была сломана. Я столкнулся с давней проблемой с системой блокировки.
«Вступительное» изображение по умолчанию, используемое на домашней странице, вернет 404, если WordPress не установлен в корневом каталоге или если /wp-content папка была перемещена. Я переключил его на другой тестовый сайт, используя конфигурацию по умолчанию, чтобы он появился.
Это не вина разработчика. Темы блокировки в настоящее время не имеют возможности добавлять динамические значения в свои шаблоны. Поэтому единственное решение – добавить ссылку на изображение со стороннего сайта или добавить статический URL.
Это не такая уж тривиальная проблема, которая, по крайней мере частично, препятствует развитию блочной темы.
С тех пор, как появились темы, у них есть выходные данные через функции PHP. При использовании шаблонов блоков все является HTML и битами данных JSON. Динамические части – это сами блоки. Это работает достаточно хорошо как минимум для 90% (а возможно, и больше) сценариев.
Проблемы возникают у авторов тем в тех случаях, когда нет существующего блока или способа добавления динамических данных в строку. Некоторые варианты использования включают:
- Печать интернационализированных текстовых строк.
- Вывод текущего года в разделе авторских прав нижнего колонтитула.
- Добавление URL-адресов изображений.
Дело не в том, что эти вещи обязательно должны быть динамичными. Ожидается, что пользователи будут редактировать контент через редактор сайта. Однако работа не идеальна, если изображение возвращает статус 404, когда у пользователей другая структура каталогов. Или когда в их теме разбросаны кусочки английского языка при использовании испанского перевода. Прежде чем блочные темы официально появятся в WordPress, это необходимо исправить.
Для Gutenberg 11.8 запланирован открытый билет, который решает эту проблему с помощью нового блока Pattern. По сути, это позволит темам выводить шаблон в шаблонах.
<!-- wp:pattern {"slug":"namespace/pattern-name"} /-->
Причина, по которой это работает, заключается в том, что шаблоны определяются через PHP. Авторы тем могут использовать функции интернационализации, например __(), распечатать дату с помощью date_i18n()или вывести URL-адрес изображения с помощью get_theme_file_uri().
Эта предстоящая функция закрыла предыдущее предложение по автономному блоку i18n . Он также должен рассмотреть несколько идей по более ранней проблеме для динамических данных в статических файлах HTML . Еще один для включения изображений в шаблоны блоков . Предложение от 2020 года по использованию паттернов в шаблонах. И, я уверен, множество других билетов.
Скорее всего, толчок произойдет потому, что он нужен будущей теме по умолчанию Twenty Twenty-Two. В настоящее время разработчикам необходимо выяснить, как отобразить изображение летящей птицы по умолчанию на главной странице и добавить интернационализированный текст кредита в нижнем колонтитуле .
Мне нравится эта концепция. Разработчики добавляют блок Pattern в свои шаблоны. В редакторе сайта шаблон отображается и сохраняется до тех пор, пока пользователь не внесет прямое изменение. Затем он ведет себя как любой другой набор блоков, и контент больше не является динамическим.
Дополнительным преимуществом этой функции является то, что она также может решить проблему дублирования кода и позволяет авторам тем следовать принципу DRY.
При создании шаблонов или частей шаблона некоторые авторы темы дублируют то же содержимое, что и шаблоны блоков, выбираемые пользователем. Вместо того, чтобы размещать код в двух местах, они могут зарегистрировать его один раз как шаблон и вызвать его в шаблоне.
Хотя блок Pattern еще не объединен официально, он выглядит лучшим решением проблемы динамического контента с темами блоков.