Высокопроизводительное хранилище заказов

High-Performance Order Storage (HPOS) (ранее Custom Order Tables) — это решение для WooCommerce, которое использует более понятную и эффективную структуру базы данных для хранения заказов.

HPOS использует архитектуру CRUD (создание, чтение, обновление, удаление) и хранит данные заказов в отдельных таблицах, оптимизированных под запросы WooCommerce. Это снижает нагрузку на базу данных и улучшает производительность магазина.

Что нового в HPOS

HPOS улучшает три ключевых параметра интернет-магазина:

  1. Масштабируемость
    При росте количества заказов увеличивается нагрузка на базу данных. HPOS использует отдельные таблицы для заказов, адресов и индексов, что снижает количество операций чтения и записи и уменьшает нагрузку. Это позволяет магазину масштабироваться без сложной оптимизации.
  2. Надёжность
    HPOS упрощает резервное копирование и восстановление данных. Снижается риск потери заказов, данных клиентов и остатков. Также уменьшается вероятность конфликтов при записи данных.
  3. Простота
    Данные заказов больше не хранятся в общей таблице _posts. Теперь они находятся в отдельных таблицах, что упрощает работу с базой, разработку и поддержку.

Как это работало раньше

До версии WooCommerce 8.2 данные заказов хранились в таблицах _posts и _postmeta.

С HPOS появились отдельные таблицы:

  • _wc_orders
  • _wc_order_addresses
  • _wc_order_operational_data
  • _wc_orders_meta

Это уменьшает нагрузку и ускоряет работу магазина.

Как включить HPOS

Перед включением убедитесь, что все плагины, использующие произвольные типы записей (например Woo Subscriptions, WooCommerce Bookings), активны. Иначе возможны расхождения данных.

В новых установках WooCommerce (с версии 8.2) HPOS включён по умолчанию.

Чтобы включить HPOS в существующем магазине:

  1. Перейдите в WooCommerce → Настройки → Дополнительно → Функции
  2. Включите Режим совместимости (синхронизация заказов с таблицей записей)
  3. Дождитесь синхронизации:
    • Процесс выполняется автоматически
    • Можно запустить вручную в WooCommerce → Статус → Запланированные действия
    • За один раз обрабатывается 25 заказов
  4. После синхронизации включите HPOS
Режим совместимости хранения данных заказов

Также можно использовать CLI-команду:

wp wc cot sync

Повторное включение режима совместимости снова запустит синхронизацию при необходимости.

Хранение данных заказов

  • Хранение записей WordPress (устаревшее) — данные хранятся в _posts и _postmeta
  • Высокопроизводительное хранилище заказов (рекомендуется) — используются новые таблицы WooCommerce
  • Режим совместимости — данные синхронизируются между всеми таблицами
Хранение заказов в таблицах WordPress
Высокопроизводительное хранение заказов
Режим совместимости хранения заказов

Синхронизация

Если включены HPOS и режим совместимости, WooCommerce синхронизирует данные между таблицами _posts, _postmeta и новыми таблицами заказов.

Работа с плагинами (Custom Post Types)

Плагины, использующие произвольные типы записей, продолжают хранить данные в таблицах WordPress. При включении HPOS данные заказов переносятся в новые таблицы.

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

Если это уже произошло:

  1. Перейдите в WooCommerce → Настройки → Дополнительно → Функции
  2. Верните хранение на Хранилище записей WordPress
  3. Дождитесь синхронизации
  4. Снова включите HPOS

Несовместимые плагины

Если установлен плагин, не поддерживающий HPOS, переключение будет недоступно.

  • Нажмите Просмотреть и управлять, чтобы увидеть список
  • Или перейдите по адресу:
    https://example.com/wp-admin/plugins.php?plugin_status=incompatible_with_feature&feature_id=custom_order_tables

Если плагин не поддерживает HPOS, обратитесь к его разработчику и попросите добавить поддержку.

Полнотекстовый поиск (экспериментально)

С WooCommerce 9.0 доступен экспериментальный полнотекстовый поиск заказов.

  1. Перейдите в WooCommerce → Настройки → Дополнительно → Функции
  2. Убедитесь, что включён HPOS
  3. В разделе Экспериментальные функции включите HPOS Full-text search indexes

Важно: работает только при включённом HPOS.

Включение полнотекстового поиска HPOS

Как отключить HPOS

Если возникли проблемы или плагины не поддерживают HPOS:

Перейдите в WooCommerce → Настройки → Дополнительно → Функции и включите Режим совместимости, затем переключите хранение на Хранилище записей WordPress (устаревшее).

Отключение HPOS

После синхронизации можно отключить режим совместимости.

Для разработчиков

Если вы дорабатываете магазин или плагины, изучите документацию: Upgrade Recipe Book

Часто задаваемые вопросы

Обязательно ли включать HPOS?

Нет. Функция необязательная и включается вручную. Вы можете использовать её в любой момент.

Плагин не поддерживает HPOS — что делать?

Обратитесь к разработчику плагина и попросите добавить поддержку. Пока можно продолжать использовать старый режим.

Подходит ли HPOS для небольших магазинов?

Да. HPOS полезен для магазинов любого размера.

Будет ли мой магазин автоматически переведён на HPOS?

Нет. Переключение выполняется вручную.

Есть ли требования к хостингу?

Нет. Любой хостинг, поддерживающий WordPress и WooCommerce, подходит.

Поделиться с друзьями
Документация WooCommerce