Руководства и туториалы

WordPress как Headless CMS с Cloudflare Pages и Functions: создаем сверхбыстрые сайты на React и Astro

Поделиться:

Переход на headless-архитектуру с WordPress позволяет разработчикам создавать полностью кастомные интерфейсы, оптимизированные для скорости, гибкости и современных пользовательских опытов, сохраняя при этом знакомый редактор WordPress, который уже знает ваша команда. Такой подход обеспечивает более быстрое время загрузки, лёгкую масштабируемость и свободу использования передовых фреймворков, таких как React или Astro, для создания высокоинтерактивных сайтов, которые выделяются на фоне конкурентов.

В то время как WordPress управляет контентом на бэкенде, доставка этого контента быстро и надёжно критически важна, потому что даже самый лучший фронтенд не покажет хорошей производительности, если API медленный или нестабильный. Именно поэтому мы хотим показать вам, как объединить WordPress на BigScoots с Cloudflare Pages и Cloudflare Functions – современными инструментами, которые обслуживают ваш фронтенд с граничных узлов с молниеносной скоростью и умной серверной логикой. Используя WP REST API, эта конфигурация гарантирует, что ваш контент загружается быстро по всему миру, сохраняет архитектуру чистой и масштабируется без усилий.

Что такое Headless CMS?

Headless CMS — это система управления контентом, которая обрабатывает только бэкенд: создание контента, хранение и административное управление. Она доставляет контент через API, полностью оставляя фронтенд (“голову“) на усмотрение разработчика.

Вместо того чтобы CMS управляла и хранением контента, и его представлением, headless-архитектура разделяет эти две задачи. Вы используете бэкенд для управления контентом, а отдельный фронтенд, созданный с помощью вашего фреймворка по выбору, — для его отображения. Вот как выглядит разделение:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions
  • Бэкенд (CMS): где редакторы входят в систему, создают записи, управляют товарами, загружают изображения и организуют контент. В данном случае — WordPress.
  • Фронтенд (сайт или приложение): то, что видят ваши пользователи. Это может быть сайт на React, мобильное приложение или даже умный дисплей.

В традиционном WordPress бэкенд и фронтенд тесно связаны — контент сохраняется, рендерится и отображается с помощью PHP-шаблонов и тем WordPress. В headless-конфигурации WordPress по-прежнему хранит и управляет вашим контентом, но не генерирует HTML для фронтенда. Вместо этого он предоставляет ваш контент через API, такие как WP REST API или GraphQL, которые ваш кастомный фронтенд запрашивает и рендерит независимо.

Headless vs. Decoupled

Using WordPress as a Headless CMS with Cloudflare Pages + Functions
  • Headless CMS: вообще не имеет фронтенда. Полностью отсоединён — только API.
  • Decoupled CMS: по-прежнему предоставляет API, но может включать базовый фронтенд или шаблоны, которые можно использовать вместе с вашим кастомным фронтендом. WordPress, например, можно использовать как в headless, так и в decoupled-режиме.

Итак, если вы создаёте полностью кастомный фронтенд на React или Astro и хотите использовать WordPress только как бэкенд, вы работаете в headless-режиме. Если вы смешиваете традиционные шаблоны WordPress (например, для превью в админке или запасных страниц), вы ближе к decoupled-сценарию.

Зачем использовать WordPress как Headless CMS?

WordPress обычно воспринимается как традиционная универсальная CMS, но внутри он удивительно гибок. Благодаря встроенному WP REST API WordPress отлично работает как бэкенд-слой для контента. Вы можете публиковать контент в панели управления WordPress как обычно и подавать его на любой фронтенд — сайты, мобильные приложения или даже цифровые вывески. Но что делает WordPress отличным headless-бэкендом?

  • Привычен для редакторов и клиентов: вам не нужно переучивать команду контент-менеджеров. Бэкенд остаётся тем же — редакторы, маркетологи и клиенты используют знакомую им панель администратора WordPress.
  • Полное покрытие API с помощью WP REST API: WordPress предоставляет большинство типов контента (записи, страницы, медиафайлы, таксономии, пользователей) через REST API на основе JSON, что упрощает получение контента в любой фронтенд с помощью таких инструментов, как fetch или Axios. Однако некоторые данные, например меню, по умолчанию не предоставляются и могут потребовать плагинов или кастомных эндпоинтов. Пользовательские поля доступны, если они правильно зарегистрированы (например, с show_in_rest => true), а популярные плагины, такие как Advanced Custom Fields (ACF), предлагают интеграцию с REST API для поддержки этого.
  • Совместимость с плагинами: такие плагины, как ACF и WooCommerce, также предоставляют данные через API, так что вы можете сохранить свой редакционный рабочий процесс, одновременно питая динамичные фронтенды.
  • Свобода выбора фреймворка: создавайте фронтенд на любом стеке, который вам нравится — React, Svelte, Astro или что-то ещё. Вы не привязаны к PHP-шаблонам или устаревшему коду.
  • Создан для производительности (особенно в паре с кэшированием на граничных узлах): обслуживание вашего фронтенда с Cloudflare Pages размещает ваш UI на границе сети, снижая время загрузки и задержку по всему миру. В сочетании с оптимизированным хостингом WordPress от BigScoots ваш API остаётся быстрым и надёжным даже под нагрузкой.
  • Сильная экосистема разработчиков и расширяемость: у WordPress огромное сообщество и тысячи плагинов и тем, которые можно адаптировать или расширить для headless-сценариев, сокращая время разработки и увеличивая гибкость.
  • Встроенное управление пользователями и правами доступа: из коробки WordPress управляет ролями и разрешениями пользователей, что можно безопасно использовать в headless-архитектуре для редакционных рабочих процессов и контроля доступа.

Using WordPress as a Headless CMS with Cloudflare Pages + Functions На что обратить внимание

Headless-архитектуры мощны, но они не являются решением «из коробки». Убедитесь, что вы заранее предусмотрели:

  • Отсутствие тем и шаблонов: вы создаёте весь фронтенд самостоятельно, от маршрутизации до рендеринга. Отлично для гибкости — просто приготовьтесь засучить рукава!
  • Не все плагины готовы к работе с API: некоторые плагины WordPress не предоставляют свои данные через REST API. Возможно, вам потребуется создать кастомные эндпоинты или использовать хуки, чтобы получить нужные данные.
  • Ручная настройка аутентификации и SEO: логику аутентификации и SEO необходимо реализовывать на фронтенде или в пограничных функциях. Такие плагины, как Rank Math, предоставляют поддержку REST API, чтобы помочь преодолеть пробелы в SEO.
  • Учёт необходимости обновлений в реальном времени: headless-решения могут потребовать дополнительных решений (например, вебхуков или опроса) для синхронизации фронтенда с изменениями контента в WordPress.
  • Безопасность эндпоинтов API: по умолчанию эндпоинты WordPress REST API, доступные только для чтения (например, получение публичных записей), являются общедоступными. Однако предоставление доступа к частным или пользовательским данным требует аутентификации для обеспечения безопасности. Для дополнительной защиты вы можете ограничить или отключить неиспользуемые эндпоинты REST API с помощью плагинов или кастомного кода, чтобы уменьшить поверхность атак.

WordPress часто воспринимается как традиционная монолитная CMS. Но на самом деле он отлично подходит в качестве headless CMS благодаря своему мощному и гибкому WP REST API.

Преимущества перехода на Headless с WordPressЧто нужно иметь в виду
Привычность для редакторов и клиентов: команды контент-менеджеров могут продолжать использовать ту же панель управления WordPress, которую они уже знают.Отсутствие тем и шаблонов: вам придётся создавать весь фронтенд с нуля.
WP REST API: WordPress предоставляет контент, такой как записи, страницы, таксономии и медиафайлы, через RESTful JSON-эндпоинты.Ограничения плагинов: не все плагины предоставляют данные через API — некоторым могут потребоваться кастомные эндпоинты.
Поддержка плагинов: популярные плагины, такие как ACF и WooCommerce, также могут предоставлять свои данные через REST API.Ручная работа по реализации: аутентификацию, кэширование и SEO необходимо обрабатывать вручную — если вы не используете совместимый с API SEO-плагин, например RankMath.
Свобода выбора фреймворка: вы можете использовать любой стек технологий для фронтенда: React, Vue, Nuxt, Astro и так далее.
Производительность: обслуживайте свой фронтенд через такие платформы, как Cloudflare Pages, чтобы сделать его быстрым, безопасным и масштабируемым.

Живое демо и проект с открытым исходным кодом

Чтобы показать вам эту конфигурацию в действии, мы создали полностью работающее демо:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Живой сайт: https://magic-headless-wp.pages.dev

Вот перевод HTML-контента с английского на русский, все HTML-теги сохранены в точности как в оригинале:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions GitHub Репозиторий: https://github.com/bigscoots/magic-headless-wp

Вы можете свободно изучать, форкать или использовать этот демо-проект для своего собственного проекта!

Настройте WordPress и Cloudflare Pages за 5 простых шагов

Шаг 1: Установите WordPress на BigScoots

Начните со стандартной установки WordPress – точно так же, как вы всегда это делаете. Мы рекомендуем включить:

  • Пароли приложений (Application Passwords).
  • Человекопонятные постоянные ссылки (Pretty permalinks).
  • Рекомендуемые плагины, такие как:
    • ACF (Advanced Custom Fields).
    • WooCommerce (если используете eCommerce).
    • Любой плагин, который добавляет пользовательские типы записей.

Вот несколько важных документов по работе с REST API WordPress и WooCommerce:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Документация по аутентификации REST API WordPress

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Документация по аутентификации REST API WooCommerce

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

Шаг 2: Получите доступ к вашим данным через WP REST API

WordPress из коробки поставляется с полнофункциональным REST API.

Примеры:

  • Получить все записи:
    GET https://example.com/wp-json/wp/v2/posts
  • Получить один товар:
    GET https://example.com/wp-json/wc/v3/products/123

WordPress и WooCommerce имеют полную поддержку REST API и подробную документацию:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Документация REST API WordPress

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Документация REST API WooCommerce

Для безопасной аутентификации запросов используйте пароли приложений в формате Basic Auth:

Authorization: Basic base64(username:application_password)

Вы можете безопасно хранить эти учетные данные как переменные окружения в Cloudflare Pages.

Шаг 3: Соберите ваш фронтенд (используя любой фреймворк)

В нашей демонстрации мы использовали Vite + React, но фронтенд полностью не зависит от фреймворка.

Вы можете использовать:

  • Next.js или Nuxt для SSR.
  • Astro или Eleventy для статических сайтов.
  • Обычный HTML и JavaScript.
  • Любой стек, который вам нравится.

Cloudflare предоставляет официальную поддержку сборки для десятков фреймворков:

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Руководства по фреймворкам Cloudflare Pages

Пример fetch-запроса в React из демонстрации:

useEffect(() => {

  fetch(‘/api/posts’)

    .then((res) => res.json())

    .then(setPosts);

}, []);

Обратите внимание, что /api/posts обрабатывается функцией Cloudflare Pages — а не прямым вызовом вашего сайта WordPress на клиентской стороне.

Шаг 4: Используйте функции Cloudflare Pages для проксирования API-запросов

Одна из самых мощных частей этой настройки — Функции Cloudflare Pages – серверные функции, работающие на границе сети (edge).

Вместо того чтобы обращаться к вашему сайту WordPress напрямую из браузера (раскрывая ключи API), вы делаете запросы типа /api/posts, которые обрабатываются на стороне сервера через Pages Functions.

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

Using WordPress as a Headless CMS with Cloudflare Pages + Functions

Взгляните на нашу реализацию кода Cloudflare Pages, чтобы увидеть, как мы делаем запросы к WP REST API с серверной стороны, используя глобальную CDN-сеть Cloudflare для обеспечения сверхбыстрой скорости каждого запроса.

Вы можете безопасно определить переменные окружения, такие как WP_AUTH_HEADER и WC_AUTH_HEADER, в панели управления вашего проекта Cloudflare Pages.

Это дает вам:

  • Запросы, защищенные аутентификацией.
  • Чистые маршруты API, такие как /api/posts.
  • Возможность кэшировать, преобразовывать или проверять данные на границе сети.

Шаг 5: Разверните ваш фронтенд с помощью Cloudflare Pages

Чтобы запустить сайт:

  1. Отправьте ваш фронтенд-код в GitHub.
  2. Создайте новый проект Cloudflare Pages.
  3. Подключите ваш GitHub-репозиторий.
  4. Укажите команду сборки (например, npm run build).
  5. Укажите выходную папку (например, dist).
  6. Добавьте переменные окружения:
    • WP_AUTH_HEADER
    • WC_AUTH_HEADER
  7. Разверните!

Cloudflare имеет подробное руководство для развертывания практически всех фронтенд-систем на Cloudflare Pages.

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

Using WordPress as a Headless CMS with Cloudflare Pages + Functions Расширенные улучшения (опционально)

Как только вы всё настроили, вот несколько способов улучшить вашу сборку:

  • Используйте Cloudflare Cache API для кэширования часто запрашиваемых ответов API.
  • Храните сессии пользователей или функциональные переключатели с помощью Cloudflare KV.
  • Добавьте перенаправления, SEO-заголовки или логику контроля доступа в Pages Functions.
  • Используйте стратегии кэширования stale-while-revalidate для динамического контента.

Быстрый обзор архитектуры

Давайте разберем стек технологий, который мы используем:

УровеньТехнология
Бэкенд CMSWordPress + WooCommerce (размещен на BigScoots)
API данныхWP REST API (и WooCommerce REST API)
ФронтендReact (через Vite)
ХостингCloudflare Pages
Edge-логика / APICloudflare Pages Functions

Станьте партнером BigScoots для хостинга Headless WordPress

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

Хороший хостинг обеспечивает:

  • Быструю и стабильную производительность REST API, чтобы ваш фронтенд загружался без задержек.
  • Надежную безопасность и автоматическое резервное копирование для защиты вашего контента.
  • Масштабируемость без ограничений для обработки внезапных скачков трафика.
  • Экспертную поддержку от живых людей, знакомых с headless-рабочими процессами, для быстрого решения проблем.

BigScoots создан именно с учетом этих потребностей. Наша инфраструктура оптимизирована для WordPress и WooCommerce, с акцентом на скорость, надежность и безопасность REST API. Кроме того, наша команда поддержки состоит из настоящих экспертов WordPress – не ботов и не запутанных уровней поддержки – готовых помочь, когда это необходимо.

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