К основному содержимому

WooCommerce HPOS: переход на новое хранилище заказов

WordPress · 09.11.2026 · 5 мин чтения

Что такое HPOS и что с ним происходит

HPOS — это High-Performance Order Storage, раньше называвшееся Custom Order Tables: отдельные таблицы для заказов вместо хранения их в таблицах записей WordPress. Основные таблицы: _wc_orders, _wc_order_addresses, _wc_order_operational_data и _wc_orders_meta, все с префиксом вашей базы данных. Существующие магазины на новое хранилище сами не переключаются.

Версия WooCommerceДатаСтатус HPOS
7.18 ноября 2022Впервые появился за флагом функции, по умолчанию выключен
8.210 октября 2023Объявлен стабильным; для новых установок включён по умолчанию

Данные таблицы взяты из заметок выпусков на сайте разработчиков WooCommerce. Если ваш магазин старше версии 8.2, заказы у вас лежат в прежнем хранилище, которое в настройках называется «WordPress posts storage (legacy)». Общую картину работы магазина см. в статье про WordPress и WooCommerce.

Нужно ли переходить прямо сейчас

Срочности нет: официального объявления о том, что прежнее хранилище устарело, и даты его отключения нет ни в одном документе WooCommerce. Документация разработчиков не называет его устаревшим. Любые сроки из сторонних блогов не подтверждены первоисточником, поэтому ориентироваться на них не стоит.

Решение принимайте по своей ситуации: переход имеет смысл, если вы планируете новые расширения, рассчитанные на HPOS, или готовитесь к росту числа заказов. Если магазин стабилен и расширения не заявили совместимость, можно подождать. Вопросы скорости самого магазина разобраны в статье про оптимизацию WooCommerce.

Резервная копия до перехода

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

Минимум — выгрузка базы командой WP-CLI или mysqldump и копия каталога сайта. Настройку регулярных копий разбирает статья про резервное копирование WordPress.

wp db export /root/backup/before-hpos.sql
mysqldump --single-transaction -u dbuser -p dbname > /root/backup/before-hpos-dump.sql
ls -lh /root/backup/

Ещё лучше сначала повторить весь переход на копии сайта: так вы увидите, какие расширения мешают, не рискуя живыми заказами.

Проверка расширений

Каждый активный плагин должен заявить совместимость с HPOS; один несовместимый блокирует выбор нового хранилища в настройках. По данным WooCommerce, расширения с WooCommerce.com совместимы, но на вашу дату публикации это стоит перепроверить. Сторонние и самописные плагины проверяйте сами.

Совместимость плагин заявляет на хуке before_woocommerce_init. Кроме того, код не должен читать и писать заказы напрямую через wp_posts и wp_postmeta: для этого есть wc_get_order() и методы объекта заказа. Иначе, как предупреждает документация, можно прочитать устаревший заказ или записать заказ, который никто не прочтёт.

use Automattic\WooCommerce\Utilities\FeaturesUtil;

add_action( 'before_woocommerce_init', function () {
    if ( class_exists( FeaturesUtil::class ) ) {
        FeaturesUtil::declare_compatibility( 'custom_order_tables', __FILE__, true );
    }
} );

Порядок перехода в админке

Переход делается в два шага: сначала включается режим совместимости и заказы копируются в новые таблицы, и только потом новое хранилище выбирается основным. Путь в админке: WooCommerce → Settings → Advanced → Features. Названия пунктов даны по английскому интерфейсу.

  1. Сделайте и проверьте резервную копию.
  2. Отметьте «Enable compatibility mode (synchronizes orders to the posts table)» и сохраните настройки.
  3. Дождитесь фонового переноса. Заказы переносятся порциями по 25 за действие; ход виден в WooCommerce → Status → Scheduled Actions.
  4. Когда перенос завершён, в блоке «Order data storage» выберите High-Performance Order Storage.
  5. Несколько дней проверяйте магазин: оформление заказа, письма, отчёты, интеграции.

То же самое через WP-CLI

На больших магазинах удобнее вести перенос из командной строки: так видно прогресс и ошибки. Для HPOS есть пространство команд wp wc hpos; старое wp wc cot помечено как устаревшее, хотя на некоторых страницах документации ещё встречается.

wp wc hpos status
wp wc hpos sync
wp wc hpos verify_data
wp wc hpos --help

Команды status, sync, verify_data, cleanup, backfill и enable перечислены в документации. Флаги каждой команды я не проверял, поэтому смотрите wp wc hpos --help на своём сервере. Команда cleanup удаляет данные заказов из прежних таблиц, поэтому запускайте её только после резервной копии и долгой проверки.

Режим совместимости: польза и цена

Режим совместимости держит заказы синхронными в обеих схемах, и поэтому откат на таблицы записей мгновенный. Документация советует не выключать его сразу, а подержать включённым некоторое время. Цена в том, что данные пишутся дважды.

Из этого следуют две вещи, которые документация прямо не формулирует: растёт нагрузка на запись и увеличивается размер базы. Следите за размером таблиц и за скоростью оформления заказа; приёмы чистки базы описаны в статье про оптимизацию базы данных WordPress.

Когда вы уверены, что всё работает, режим совместимости выключают. После этого откат на старые таблицы уже не сводится к одному переключателю.

Частые вопросы

Включится ли HPOS сам при обновлении WooCommerce?

Нет. Для новых установок с версии 8.2 он включён по умолчанию, а существующие магазины остаются на прежнем хранилище, пока вы сами не переключитесь.

Можно ли вернуться назад?

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

Когда отключат старое хранилище?

Официальной даты нет, как нет и заявления, что оно устарело. Если где-то встретите конкретный срок, ищите его в документации WooCommerce, а не в пересказах.

Что делать клиентам ZevsHost?

На общем хостинге резервные копии и доступ к базе обеспечивает панель: сделайте копию через неё и проведите переход в админке WooCommerce. На VPS и выделенном сервере копии, WP-CLI и проверку расширений ведёте вы сами.

Статья помогла?
← Назад в базу знаний Задать вопрос поддержке