В WooCommerce 10.9 был представлен экспериментальный механизм WooCommerce Dual API — архитектура, ориентированная на код, которая генерирует GraphQL-эндпоинты на основе PHP-классов. В версии WooCommerce 11.2 разработчики удалят этот экспериментальный механизм из ядра WooCommerce, выпустив его в виде отдельного плагина.
Вынос Dual API в отдельный плагин обеспечивает большую гибкость разработки, поскольку в таком случае девелоперы могут выпускать обновления независимо от конкретных релизов ядра WooCommerce. Поскольку эта функция была доступна только при включенном специальном флаге, данные изменения затронут лишь тех разработчиков, которые активировали и расширяли этот функционал.
Удаление экспериментального API
Встроенный экспериментальный API для товаров и купонов, доступный в версиях WooCommerce с 10.9 по 11.1, будет удален в версии 11.2. Если вы использовали эти экспериментальные конечные точки, вам необходимо отказаться от них или реализовать аналогичный API в собственном расширении. Плагин WooCommerce Dual API не восстанавливает эти конечные точки.
Механизм Dual API по-прежнему полезен для разработчиков расширений WooCommerce, желающих создать собственные двойные API. Если это ваш случай, то вот что изменится:
- Функциональный флаг, активировавший этот механизм, больше не используется. Теперь для работы механизма необходимо установить и активировать плагин WooCommerce Dual API. Плагин требует наличия WooCommerce версии 11.2 (или новее) и PHP версии 8.1 (или новее). Если ваше расширение зависит от этого механизма, укажите обе зависимости в заголовке плагина: Requires Plugins: woocommerce, woocommerce-dual-api.
- Скрипт для создания API теперь входит в состав плагина WooCommerce Dual API. Чтобы воспользоваться им, установите плагин или клонируйте его репозиторий локально.
- Документация теперь находится в репозитории плагина Dual API (также доступна на GitHub Pages).
- Плагин WooCommerce Dual API должен быть установлен и активирован на том же сайте, где имеется ваше расширение. Он обеспечивает работу механизма, а ваше расширение регистрирует соответствующую конечную точку GraphQL. Ниже приведен фрагмент кода, демонстрирующий, как это сделать (взят из примера плагина WooCommerce Simple Events):
use AutomatticWooCommerceApiInfrastructureMain as DualApiMain;
add_action(
'plugins_loaded',
static function () {
if ( method_exists( DualApiMain::class, 'register_graphql_endpoint' ) ) {
DualApiMain::register_graphql_endpoint(
__DIR__,
'wc',
'/graphql/simple-events'
);
}
}
);
Dual API остается экспериментальной функцией
WooCommerce Dual API по-прежнему имеет статус экспериментальной функции. Любые элементы в пространстве имен Automattic\WooCommerce\Api могут быть изменены (с нарушением обратной совместимости) или удалены в любом из будущих релизов. Не используйте их в расширениях, предназначенных для рабочей среды.
Полезен ли вам этот механизм Dual API? Хотели бы вы видеть его в составе WooCommerce в качестве стабильного компонента? Есть ли у вас предложения по изменениям? Поделитесь своим мнением в специальном обсуждении на GitHub.
