Верстка страниц WordPress через ИИ агентов с подходом типа Astro JS и Next JS

В современных фреймворках Astro и Next.js часто используется маршрутизация по файлам (file-based routing): адрес страницы определяется структурой файлов в проекте. Это удобно для разработки, потому что связь между адресом, кодом и содержимым страницы становится предсказуемой.

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

Суть подхода:

  • создается специальный шаблон страницы Code Driven;
  • для страниц с этим шаблоном WordPress ищет файл с содержимым в каталоге patterns/pages/...;
  • адрес страницы сопоставляется с путем к файлу по заранее заданным правилам;
  • если подходящий файл не найден, WordPress показывает обычное содержимое страницы через the_content().

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

Назначение и цели

Такой способ полезен, когда страницу сначала удобнее собрать как технический прототип в файлах, а уже после стабилизации передать в обычное редактирование через WordPress.

Типовой сценарий:

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

Для быстрой сборки и верстки страниц можно использовать Tailwind CSS и библиотеку готовых компонентов DaisyUI. Все это вместе с ИИ агентами типа Claude Code, OpenAI Codex, OpenCode, OpenClaw и т д

Составляющие и особенности

1. Четкая область применения

Механика работает только на страницах, где выбран шаблон Code Driven. Остальные страницы, записи, архивы и шаблоны темы не затрагиваются.

Это снижает риск скрытых изменений на сайте: новая логика включается только там, где ее явно выбрали.

2. Отдельный шаблон страницы

В теме создается отдельный шаблон страницы:

  • wp/wp-content/themes/app/templates/code-driven.php

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

3. Роутер файлов страниц

За поиск подходящего файла отвечает отдельный роутер:

  • wp/wp-content/themes/app/includes/PagePatternRouter.php

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

4. Файлы с содержимым страниц

Сами страницы хранятся в каталоге:

  • wp/wp-content/themes/app/patterns/pages/**/*.php

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

5. Маршрутизация по файлам

Адрес страницы можно сопоставлять с файлом в теме. Например, страница /hello-world/ может брать содержимое из файла:

  • patterns/pages/hello-world.php

А вложенная страница /hello-world/test/ — из файла:

  • patterns/pages/hello-world/test.php

Такой подход напоминает маршрутизацию по файлам (file-based routing) в Astro и Next.js, но остается внутри архитектуры WordPress.

6. Безопасный резервный вариант

Если файл не найден, страница не ломается. WordPress просто выводит обычное содержимое страницы из редактора.

Это важно для продакшена: отсутствие файла не должно приводить к пустой странице или критической ошибке.

7. Явная архитектура без скрытых подмен

Ключевой принцип: логика поиска и вывода файла находится в отдельном подключаемом файле, а решение о применении этой логики остается в шаблоне страницы.

Так поведение проще читать, тестировать и отключать. При этом не требуется глобально подменять содержимое через фильтр the_content.

Как работает поиск файла

Для страницы с шаблоном Code Driven можно использовать такой порядок поиска:

  1. patterns/pages/<uri>.php
  2. patterns/pages/<uri>/index.php
  3. patterns/pages/<slug>.php
  4. patterns/pages/home.php — для главной страницы
  5. patterns/pages/default.php — общий файл по умолчанию

Где:

  • <uri> — путь страницы без домена;
  • <slug> — короткое имя текущей страницы;
  • home.php — отдельный файл для главной;
  • default.php — резервный файл, если точного совпадения нет.

Такой порядок дает гибкость: можно описывать как простые страницы, так и вложенные разделы.

Реализация по шагам

Шаг 1. Создать шаблон страницы

Файл:

templates/code-driven.php

<?php
/**
 * Template Name: Code Driven
 * Template Post Type: page
 */

if ( ! is_page() ) {
    wp_die( 'This template is only available for pages.', 'Template Error', [ 'response' => 404 ] );
}

get_header();
?>

<main class="site-main">
    <?php
    while ( have_posts() ) :
        the_post();

        $pattern_content = function_exists( 'app_render_page_pattern' )
            ? app_render_page_pattern()
            : null;

        if ( null !== $pattern_content ) {
            echo $pattern_content;
        } else {
            the_content();
        }
    endwhile;
    ?>
</main>

<?php
get_footer();

Этот шаблон делает три вещи:

  1. Проверяет, что он применяется именно к странице WordPress.
  2. Пытается получить содержимое из файла темы.
  3. Если файла нет, выводит обычное содержимое страницы.

Главное преимущество такого варианта — явность. Нет глобальной подмены содержимого через фильтр the_content, поэтому поведение не распространяется на весь сайт.

Шаг 2. Добавить резолвер файлов

Файл:

includes/PagePatternRouter.php

function app_resolve_page_pattern_file() {
    if ( ! is_page() || ! is_page_template( 'templates/code-driven.php' ) ) {
        return null;
    }

    // ... сбор возможных файлов и проверка их существования ...
}

function app_render_page_pattern() {
    $file = app_resolve_page_pattern_file();

    if ( null === $file ) {
        return null;
    }

    ob_start();
    include $file;
    $markup = trim( (string) ob_get_clean() );

    if ( '' === $markup ) {
        return null;
    }

    return do_blocks( $markup );
}

Функция app_resolve_page_pattern_file() отвечает только за поиск подходящего файла. Функция app_render_page_pattern() отвечает за вывод найденного файла.

Разделение полезно: поиск файла можно отдельно тестировать, логировать и дорабатывать.

Шаг 3. Создать файлы страниц

Примеры файлов:

  • patterns/pages/hello-world.php
  • patterns/pages/hello-world/test.php

Пример простого файла hello-world.php:

<!-- wp:heading {"textAlign":"center","level":1} -->
<h1 class="wp-block-heading has-text-align-center">Hello World</h1>
<!-- /wp:heading -->

<!-- wp:paragraph {"align":"center"} -->
<p class="has-text-align-center">Этот контент загружен из patterns/pages/hello-world.php.</p>
<!-- /wp:paragraph -->

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

Как пользоваться

Для редактора и разработчика процесс выглядит так:

  1. Создать страницу в WordPress.
  2. Назначить ей шаблон Code Driven.
  3. Создать соответствующий файл в каталоге patterns/pages.
  4. Открыть страницу на сайте и проверить результат.

Для вложенных адресов, например /hello-world/test/, нужна соответствующая структура файлов и иерархия страниц в WordPress.

Чем это отличается от Astro и Next.js

Похоже:

  • адрес страницы связан со структурой файлов;
  • содержимое удобно хранить рядом с кодом;
  • новую страницу часто можно добавить созданием нового файла.

Отличается:

  • WordPress все равно требует страницу в базе данных;
  • это не заменяет иерархию шаблонов WordPress (template hierarchy), а добавляет отдельный слой поверх нее;
  • динамические сегменты адреса, например [slug], нужно реализовывать отдельно через сопоставитель маршрутов (matcher) или карту маршрутов (route map).

Где подход особенно полезен

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

Ограничения и риски

  1. Содержимое в файлах требует процесса разработки: ветки, коммиты, проверка и деплой. Для разработчика это плюс, но для редактора без доступа к коду — ограничение.
  2. Если часть содержимого живет в файлах, а часть — в редакторе WordPress, нужно заранее определить источник истины. Иначе команда быстро запутается, где именно править страницу.
  3. Нужно аккуратно настроить правила поиска файлов. Слишком широкие правила могут привести к неожиданному выводу не того файла.
  4. Желательно добавить логирование: какой адрес страницы был сопоставлен с каким файлом. Это упростит отладку.

Вывод

Разработка страниц WordPress из файлов по подходу Astro и Next.js — это практичный гибрид. WordPress сохраняет свои сильные стороны: админку, редактор, роли пользователей и экосистему. При этом команда получает более предсказуемый процесс первичной разработки страниц.

Оптимальная схема — использовать отдельный шаблон Code Driven, явный поиск файла и безопасный возврат к обычному содержимому WordPress. Тогда решение остается понятным, управляемым и безопасным для рабочей темы.

Фото аватара

Antony I

Веб разработчик, специализация на лучших мировых практиках: WordPress, WooCommerce, NextJS, Strapi, JAMStack ...

Основные типы проектов: CMS, eCommerce, SEO, LMS, ECM, BPM

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *