Тема
Хуки плагина
Справочник всех хуков (фильтров и экшенов) плагинов wc-iikocloud и wc-iikocloud-modules.
Вы можете использовать перечисленные ниже хуки для расширения функциональности плагина:
- кастомизации экспорта заказов,
- изменения текстов и настроек на странице оформления заказа,
- интеграции с собственным кодом или сторонними плагинами,
- и др.
Хуки позволяют гибко подстраивать работу плагина под ваши бизнес-процессы без изменения исходного кода.
Префикс хуков: wc_iikocloud_ (константа WC_IIKOCLOUD_PREFIX).
Хуки основного плагина wc-iikocloud
Фильтры
wc_iikocloud_address_format_type
Переопределение формата адреса при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$format | string | Текущий формат: 'legacy', 'city' или 'auto' |
$order_id | int | ID заказа WooCommerce |
$organization_id | string | ID организации iiko |
Возвращает: string — 'legacy' или 'city'
Пример:
php
add_filter( 'wc_iikocloud_address_format_type', function ( $format, $order_id, $organization_id ) {
return 'city'; // Принудительно использовать формат City для всех заказов
}, 10, 3 );wc_iikocloud_delivery_address_line1
Кастомизация строки адреса line1 (формат City).
| Параметр | Тип | Описание |
|---|---|---|
$line1 | string | Собранная строка адреса |
$order | WC_Order | Заказ WooCommerce |
$order_id | int | ID заказа |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_delivery_address_line1', function ( $line1, $order, $order_id ) {
return strtoupper( $line1 ); // Собственное форматирование
}, 10, 3 );wc_iikocloud_order_complete_before
Переопределение времени «готовить к» для заказа.
| Параметр | Тип | Описание |
|---|---|---|
$value | mixed | По умолчанию: null |
$order_id | int | ID заказа |
Возвращает: mixed — строка даты/времени ISO 8601 или null
wc_iikocloud_order_phone
Фильтр номера телефона клиента при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$phone | string | Только цифры (без +) |
$order_id | int | ID заказа (не передаётся) |
Возвращает: string — только цифры; плагин добавляет префикс +
wc_iikocloud_order_service_type
Переопределение типа услуги: DeliveryByClient (самовывоз) или DeliveryByCourier.
| Параметр | Тип | Описание |
|---|---|---|
$type | string | Текущий тип |
$order_id | int | ID заказа |
Возвращает: string
wc_iikocloud_order_delivery_point
Переопределение данных точки доставки (адрес, координаты, комментарий).
| Параметр | Тип | Описание |
|---|---|---|
$point | array | null |
$order_id | int | ID заказа |
Возвращает: array|null
wc_iikocloud_order_comment
Фильтр комментария к заказу при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$comment | string | Комментарий к заказу |
$order_id | int | ID заказа |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_order_comment', function ( $comment, $order_id ) {
// Добавить информацию о применённой скидке в комментарий
$order = wc_get_order( $order_id );
if ( $order && $order->get_fees() ) {
foreach ( $order->get_fees() as $fee ) {
if ( $fee->get_total() < 0 ) {
return $fee->get_name() . PHP_EOL . $comment;
}
}
}
return $comment;
}, 10, 2 );wc_iikocloud_order_customer
Фильтр данных клиента при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$customer | array | Данные клиента |
$order | WC_Order | Объект заказа |
Возвращает: array
wc_iikocloud_order_status_notifications
Флаг для поля shouldReceiveOrderStatusNotifications в объекте клиента при экспорте в iiko (уведомления о статусе заказа, в том числе SMS — при настройке в iiko).
| Параметр | Тип | Описание |
|---|---|---|
$value | mixed | По умолчанию: true. Можно вернуть false, true или null (см. ниже) |
$order | WC_Order | Объект заказа |
Возвращает: bool|null — true/false передаётся в API как boolean; null — поле не включается в JSON (поведение по умолчанию на стороне iiko).
Пример (привязка к чекбоксу на checkout, сохранённому в мета заказа):
php
add_filter( 'wc_iikocloud_order_status_notifications', function ( $value, $order ) {
if ( ! $order instanceof \WC_Order ) {
return $value;
}
$meta = $order->get_meta( '_my_sms_consent' );
return 'yes' === $meta;
}, 10, 2 );wc_iikocloud_order_guests
Фильтр количества гостей.
| Параметр | Тип | Описание |
|---|---|---|
$guests | mixed | Количество гостей |
$order_id | int | ID заказа |
Возвращает: mixed
wc_iikocloud_order_items
Фильтр массива позиций заказа при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$items | array | Позиции заказа |
$order_id | int | ID заказа |
Возвращает: array
Пример:
php
add_filter( 'wc_iikocloud_order_items', function ( $order_items, $order_id ) {
// Добавить обязательный товар к каждому заказу
$order_items[] = [
'productId' => 'uuid-товара-из-iiko',
'modifiers' => null,
'price' => 0,
'positionId' => null,
'type' => 'Product',
'amount' => 1.0,
'productSizeId' => null,
'comboInformation' => null,
'comment' => null,
];
return $order_items;
}, 10, 2 );wc_iikocloud_order_discounts
Предоставление кастомных данных о скидках при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$discounts | array | null |
$order | WC_Order | Объект заказа |
Возвращает: array|null
wc_iikocloud_order_payments
Предоставление кастомных данных об оплате при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$payments | array | null |
$order | WC_Order | Объект заказа |
Возвращает: array|null
wc_iikocloud_delivery_point_comment
Переопределение комментария к точке доставки.
| Параметр | Тип | Описание |
|---|---|---|
$comment | string | null |
$order_id | int | ID заказа |
Возвращает: string|null
wc_iikocloud_export_delivery_modifiers
Фильтр модификаторов товара при экспорте доставки.
| Параметр | Тип | Описание |
|---|---|---|
$modifiers | array | Модификаторы товара |
$order_item | WC_Order_Item_Product | Позиция заказа |
Возвращает: array
wc_iikocloud_order_export_terminal_id
Переопределение ID группы терминалов при экспорте.
| Параметр | Тип | Описание |
|---|---|---|
$terminal_id | string | ID группы терминалов |
$order_id | int | ID заказа |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_order_export_terminal_id', function ( $terminal_id, $order_id ) {
// Выбрать терминал в зависимости от времени (например, «счастливые часы»)
$current_day = (int) date( 'N' );
$current_hour = (int) date( 'H' );
if ( $current_day >= 1 && $current_day <= 4 && $current_hour >= 11 && $current_hour < 16 ) {
return 'uuid-терминала-для-специальных-часов';
}
return $terminal_id;
}, 10, 2 );wc_iikocloud_order_table_ids
Предоставление ID столов для заказа (режим ресторана).
| Параметр | Тип | Описание |
|---|---|---|
$table_ids | array | null |
$order_id | int | ID заказа |
Возвращает: array|null
wc_iikocloud_order_cheque_additional_info
Фильтр дополнительной информации для чека.
| Параметр | Тип | Описание |
|---|---|---|
$info | array | null |
$order_id | int | ID заказа |
Возвращает: array|null
wc_iikocloud_plugin_subheader
Фильтр HTML подзаголовка на странице плагина в админке.
| Параметр | Тип | Описание |
|---|---|---|
$html | string | HTML подзаголовка |
Возвращает: string
wc_iikocloud_kbzhu
Фильтр вывода шорткода КБЖУ (пищевая ценность).
| Параметр | Тип | Описание |
|---|---|---|
$html | string | Сформированный HTML |
$product_kbzhu | array | Данные КБЖУ товара |
Возвращает: string
Экшены
wc_iikocloud_loaded
Вызывается после полной загрузки плагина.
Параметры: нет
Пример:
php
add_action( 'wc_iikocloud_loaded', function () {
// Кастомная инициализация после загрузки плагина
} );wc_iikocloud_add_plugin_page_fieldsets
Добавление кастомных блоков полей на страницу плагина в админке.
Параметры: нет
Пример:
php
add_action( 'wc_iikocloud_add_plugin_page_fieldsets', function () {
echo '<fieldset>...</fieldset>';
} );wc_iikocloud_created_delivery
Вызывается после создания доставки в iiko.
| Параметр | Тип | Описание |
|---|---|---|
$created_delivery | array | Ответ API iiko |
$order_id | string | ID заказа |
$organization_id | string | ID организации |
Пример:
php
add_action( 'wc_iikocloud_created_delivery', function ( $created_delivery, $order_id, $organization_id ) {
// Логирование или синхронизация после экспорта
}, 10, 3 );Хуки премиум плагина wc-iikocloud-modules (дополнительные модули)
Фильтры
wc_iikocloud_modifiers_title
Фильтр заголовка блока модуля «Модификаторы».
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Модификаторы» |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_modifiers_title', function ( $title ) {
return 'Добавь по вкусу / не забудь добавить начинки';
} );wc_iikocloud_delivery_zones_title
Фильтр заголовка поля «Зоны доставки».
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Зоны доставки» |
Возвращает: string
wc_iikocloud_delivery_zones_full_address
Фильтр полного адреса, используемого в модуле «Зоны доставки».
| Параметр | Тип | Описание |
|---|---|---|
$address | string | Полный адрес плательщика |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_delivery_zones_full_address', function ( $address ) {
return str_replace( 'город Воронеж ', '', $address );
} );wc_iikocloud_default_city
Фильтр города по умолчанию для модуля «Зоны доставки» (Яндекс.Карты).
| Параметр | Тип | Описание |
|---|---|---|
$city | string | Название города по умолчанию |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_default_city', function ( $city ) {
return ''; // Убрать город по умолчанию
} );wc_iikocloud_city_suggest_prefix
Префикс для запросов к API подсказок городов.
| Параметр | Тип | Описание |
|---|---|---|
$prefix | string | По умолчанию: '' |
Возвращает: string
Пример:
php
add_filter( 'wc_iikocloud_city_suggest_prefix', function ( $prefix ) {
return 'Брянский район, ';
} );wc_iikocloud_suggest_offset
Фильтр смещения для подсказок адресов (Яндекс).
| Параметр | Тип | Описание |
|---|---|---|
$offset | array | По умолчанию: [ 0, 36 ] |
Возвращает: array
Пример:
php
add_filter( 'wc_iikocloud_suggest_offset', function ( $offset ) {
return [ 0, 36 ]; // Смещение для карты
} );wc_iikocloud_suggest_results
Фильтр количества результатов подсказок.
| Параметр | Тип | Описание |
|---|---|---|
$count | int | По умолчанию: 3 |
Возвращает: int
wc_iikocloud_map_address_messages
Фильтр сообщений, связанных с адресом, для карты в модуле «Зоны доставки».
| Параметр | Тип | Описание |
|---|---|---|
$messages | array | Ключи: inaccurate_address_text, specify_house_number_text и др. |
Возвращает: array
wc_iikocloud_map_shipping_messages
Фильтр сообщений, связанных с доставкой, для модуля «Зоны доставки».
| Параметр | Тип | Описание |
|---|---|---|
$messages | array | Ключи: can_order_text, minimum_order_text, no_zone_found_text |
Возвращает: array
wc_iikocloud_time_title
Фильтр заголовка блока «Время доставки» на странице оформления заказа.
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Время доставки» |
Возвращает: string
wc_iikocloud_complete_before_types
Фильтр опций «Готовить к» (Как можно скорее / К определённому времени).
| Параметр | Тип | Описание |
|---|---|---|
$options | array | Ключи: billing_complete_before_asap, billing_complete_before_btt |
Возвращает: array
Пример:
php
add_filter( 'wc_iikocloud_complete_before_types', function ( $options ) {
// Убрать «Как можно скорее» для определённых категорий (например, торты)
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( has_term( 'cakes', 'product_cat', $cart_item['product_id'] ) ) {
unset( $options['billing_complete_before_asap'] );
add_filter( 'wc_iikocloud_complete_before_minutes_offset', fn() => 60 * 24 * 2 ); // 2 дня
break;
}
}
return $options;
} );wc_iikocloud_complete_before_minutes_offset
Фильтр шага минут для выбора времени (например, округление до 30 мин).
| Параметр | Тип | Описание |
|---|---|---|
$minutes | int | По умолчанию: 30 |
Возвращает: int
Пример:
php
add_filter( 'wc_iikocloud_complete_before_minutes_offset', function ( $minutes ) {
// Для пицц и пирогов — минимум 4 часа
foreach ( WC()->cart->get_cart() as $cart_item ) {
if ( has_term( 'pizza-pies', 'product_cat', $cart_item['product_id'] ) ) {
return 60 * 4;
}
}
return $minutes;
} );wc_iikocloud_tables_title
Фильтр заголовка поля «Стол» на странице оформления заказа.
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Стол» |
Возвращает: string
wc_iikocloud_change_title
Фильтр заголовка поля «Сдача с» на странице оформления заказа.
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Сдача с» |
Возвращает: string
wc_iikocloud_guests_title
Фильтр заголовка поля «Количество человек» на странице оформления заказа.
| Параметр | Тип | Описание |
|---|---|---|
$title | string | По умолчанию: «Количество человек» |
Возвращает: string
wc_iikocloud_checkout_settings
Фильтр настроек модуля оформления заказа.
| Параметр | Тип | Описание |
|---|---|---|
$settings | array | Конфигурация checkout |
Возвращает: array
wc_iikocloud_delivery_switch_types
Фильтр опций переключения типа доставки (модуль «Зоны доставки»).
| Параметр | Тип | Описание |
|---|---|---|
$options | array | Опции переключения |
Возвращает: array
Пример:
php
add_filter( 'wc_iikocloud_delivery_switch_types', function ( $options ) {
asort( $options ); // Изменить порядок опций
return $options;
} );Фильтры WooCommerce (wc-iikocloud-modules)
Метод доставки iiko_local_pickup использует стандартные фильтры WooCommerce:
woocommerce_shipping_iiko_local_pickup_is_available— фильтр доступности метода доставки.