Шаблон для постов категории в блоковой теме?

Вопрос или проблема

Я пытаюсь использовать пользовательский шаблон для постов определенной категории в блочной теме. Я создал файл шаблона в формате html (post-show.html). И отредактировал шаблон в редакторе сайта. Как я делал это раньше до блочных тем, я затем включил это в свой файл functions.php:

// добавление шаблона по категории
function get_custom_template( $single_template ) {
  global $post;
  if ( in_category('show') ) {
    $single_template = dirname( __FILE__ ) . '/templates/post-show.html';
  }
  return $single_template;
}
add_filter( "single_template", "get_custom_template" );

Когда я затем загружаю пост категории “show”, WP загружает фактический файл post-show.html, а не отредактированный в редакторе сайта шаблон.

Есть идеи, как это можно сделать в блочной теме вместо этого?

Изучив эту статью, я решил создать файл post-show.php и указать на него в моей функции get_custom_template. Затем я взял основную часть шаблона post-show — по сути, все, кроме заголовка и подвала — который я создал в полном редакторе сайта и создал из него шаблонную часть под названием “show”. Затем, в моем файле post-show.php, я добавил все остальные части страницы, вызвал заголовок и подвал с помощью block_header_area() и block_footer_area(), и наконец добавил шаблонную часть “show” с помощью block_template_part().

Все работает. Но это в значительной степени противоречит цели полного редактирования сайта, так как мне придется вносить изменения в этот php-шаблонный файл, если я захочу добавить другие части к своим постам вне шаблонной части “show” (и было бы еще хуже, если бы я разрешал другим пользователям редактировать файлы шаблонов в полном редакторе сайта). Мне кажется, нам нужна какая-то функция block_template_part для целых шаблонов. И я все еще надеюсь, что существует какое-то другое решение, о котором я пока не знаю.

Ответ или решение

Оригинальность и разнообразие подходов к проектированию сайтов всегда занимали ключевую роль в современной веб-разработке. Из данного вопроса видно, что вы стремитесь интегрировать индивидуальный шаблон для постов определенной категории в блоковую тему WordPress, при этом используя возможности полного редактирования сайта (Full Site Editing, FSE).

Теория

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

Пример

Рассмотрим более подробный пример вашей текущей реализации. До внедрения FSE, классическим решением задачи подключения пользовательского шаблона для поста конкретной категории было бы добавление функции в functions.php, которая бы заменяла файл шаблона для постов, основываясь на категории:

// добавляем шаблон по категории
function get_custom_template( $single_template ) {
  global $post;
  if ( in_category('show') ) {
    $single_template = dirname( __FILE__ ) . '/templates/post-show.html';
  }
  return $single_template;
}
add_filter( "single_template", "get_custom_template" );

Однако несмотря на современный подход блоков, система WordPress по-прежнему напрямую считывает HTML-файл, который вы указали. Это происходит потому, что подходы HTML-шаблонов и PHP-шаблонов имеют некоторые различия в обработке. Вы осознали, что ваш изначальный метод мог бы напрямую использовать PHP-шаблоны для обработки данных.

Применение

Современная архитектура блоков предполагает отказ от подобных манипуляций в PHP, вместо этого перемещая акцент на использование JSON-конфигурации и управления в редакторе сайта. Всё больше усилий прилагается к тому, чтобы интерфейс редактирования визуально отображал изменения без изменения исходного кода или традиционных шаблонов PHP.

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

  1. Создание шаблонов через редактор: В блоковом редакторе создайте файл с помощью полного редактирования сайта для категории "show". При этом вы определяете все визуальные и содержательные элементы, которые хотите интегрировать для этого шаблона.

  2. Использование theme.json: В файле theme.json вашей темы убедитесь, что зарегистрированы нужные шаблоны. В этом файле можно задать глобальные параметры и блоки, которые будут использоваться, с учетом ваших пользовательских настроек.

  3. Редактор блоков и шаблонных частей: Разделите ваши элементы шаблонов на части. Используйте концепцию "Template Part" в редакторе блоков для минимизации отдельных элементов, таких как головная часть, навигация или подвал, а также их повторное использование в других частях сайта.

  4. Ограничение PHP: При необходимости всё же использовать PHP, минимизируйте сложность, оставляя только основные операции, такие как подключение или вызов. Используйте такие функции как block_template_part() внутри PHP-шаблонов для интеграции готовых блоков.

  5. Автоматическое размещение шаблонов на основе URL: Исследуйте использование редактора для автоматической подстановки нужного шаблона на основе URL или категории. Это позволит вам по-прежнему использовать преимущества FSE, ограничивая вмешательство в исходный код.

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

Оцените материал
Добавить комментарий

Капча загружается...