Верх страницы
Обложка к записи Оптимизация WooCommerce путём переноса заказов в отдельную таблицу
Время для прочтения: 0 мин. 21 сек.

Оптимизация WooCommerce путём переноса заказов в отдельную таблицу

WooCommerce Custom Orders Table — простой, но полезный плагин, который улучшает производительность WooCommerce, добавляя пользовательскую таблицу с правильными индексами для хранения информации о заказах.

Бэкграунд

В WooCommerce 3.0 появился долгожданный CRUD (Create, Read, Update и Delete) интерфейс, благодаря которому появилась возможность унифицировать способ хранения и получения данных WooCommerce.

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

Не секрет, что WooCommerce создает более 40 отдельных мета записей для каждого отдельного заказа. Если у вашего магазина в день появляется хотя бы 10 заказов, то в таблице мета записей создаётся 400 новых строк каждый день!

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

Плагин WooCommerce Custom Orders Table использует WooCommerce CRUD для сохранения данных о заказе в единую произвольную таблицу, оптимизированную для запросов WooCommerce.

Один заказ создает только одну новую строку с минимальным влиянием на производительность.

Требования

Для правильной работы WooCommerce Custom Orders Table необходим WooCommerce 3.5.1 или выше.

Если вы хотите перенести существующие данные о заказах, у вас должна быть возможность запускать команды WP-CLI в вашей среде WooCommerce.

Миграция

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

Самый простой способ сделать это — через WP-CLI. Плагин поставляется с тремя командами, которые помогут вам в этом процессе.

Подсчёт количества заказов для миграции

Если вы хотите увидеть количество заказов, которые еще не были перемещены в новую таблицу заказов, вы можете быстро получить это значение с помощью команды count:

wp wc orders-table count

Миграция заказов в новую таблицу

Команда migrate перенесёт наиболее распространенные мета записи для заказов WooCommerce в единую таблицу базы данных, оптимизированную для производительности вашего магазина.

wp wc orders-table migrate

Опции

--batch-size=<размер> — количество заказов, которое обрабатывается за одну итерацию. По умолчанию 100.

--save-post-meta — предотвращает удаление мета записей из таблицы wp_postmeta при успешной миграции в новую таблицу.

Копирование заказов обратно в мета записи

Если вам потребуется вернуть данные о заказах обратно в таблицу wp_postmeta (например при удаление плагина WooCommerce Custom Orders Table), вы можете откатить миграцию в любое время с помощью команды backfill.

wp wc orders-table backfill

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

Опции

--batch-size=<размер> — количество заказов, которое обрабатывается за одну итерацию. По умолчанию 100.

Сотрудничество

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

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, OpenCart, DLE, Laravel, Moonshine, Symfony, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

4 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Фахад Сулейманович
Фахад Сулейманович
4 лет назад

Хочу выразить огромную благодарность разработчикам WooCommerce Custom Orders Table — у нас было 18 тысяч заказов, сайт начал дико зависать, а API вообще не отвечало. После переноса всех заказов в единую таблицу уменьшилось количество записей в БД, а поиск по заказам ускорился в разы. Планирую описать свой опыт в статье, а плагин применять в будущем.

Алексей
Алексей
4 лет назад

Здравствуйте. Скажите, пожалуйста, если устанавливать плагин на новый сайт, где еще нет заказов, получается и переносить ничего не нужно? Есть ли подробная инструкция установки и настройки плагина на новый сайт?

Предыдущая запись
Следующая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы