Skip to content

Хуки плагина

Справочник всех хуков (фильтров и экшенов) плагинов maxpos-integration и maxpos-integration-pro.

Вы можете использовать перечисленные ниже хуки для расширения функциональности плагина:

  • кастомизации экспорта заказов,
  • изменения текстов и настроек на странице оформления заказа,
  • интеграции с собственным кодом или сторонними плагинами,
  • и др.

Хуки позволяют гибко подстраивать работу плагина под ваши бизнес-процессы без изменения исходного кода.

Префикс хуков: maxpos_integration_.


Хуки основного плагина maxpos-integration

Фильтры

maxpos_integration_address_format_type

Переопределение формата адреса при экспорте.

ПараметрТипОписание
$formatstringТекущий формат: 'legacy', 'city' или 'auto'
$order_idintID заказа WooCommerce
$organization_idstringID организации iiko

Возвращает: string'legacy' или 'city'

Пример:

php
add_filter( 'maxpos_integration_address_format_type', function ( $format, $order_id, $organization_id ) {
    return 'city'; // Принудительно использовать формат City для всех заказов
}, 10, 3 );

maxpos_integration_delivery_address_line1

Кастомизация строки адреса line1 (формат City).

ПараметрТипОписание
$line1stringСобранная строка адреса
$orderWC_OrderЗаказ WooCommerce
$order_idintID заказа

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_delivery_address_line1', function ( $line1, $order, $order_id ) {
    return strtoupper( $line1 ); // Собственное форматирование
}, 10, 3 );

maxpos_integration_order_complete_before

Переопределение времени «готовить к» для заказа.

ПараметрТипОписание
$valuemixedПо умолчанию: null
$order_idintID заказа

Возвращает: mixed — строка даты/времени ISO 8601 или null


maxpos_integration_order_phone

Фильтр номера телефона клиента при экспорте.

ПараметрТипОписание
$phonestringТолько цифры (без +)
$order_idintID заказа

Возвращает: string — только цифры; плагин добавляет префикс +


maxpos_integration_order_service_type

Переопределение типа услуги: DeliveryByClient (самовывоз) или DeliveryByCourier.

ПараметрТипОписание
$typestringТекущий тип
$order_idintID заказа

Возвращает: string


maxpos_integration_order_delivery_point

Переопределение данных точки доставки (адрес, координаты, комментарий).

ПараметрТипОписание
$pointarraynull
$order_idintID заказа

Возвращает: array|null


maxpos_integration_order_comment

Фильтр комментария к заказу при экспорте.

ПараметрТипОписание
$commentstringКомментарий к заказу
$order_idintID заказа

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_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 );

maxpos_integration_order_customer

Фильтр данных клиента при экспорте.

ПараметрТипОписание
$customerarrayДанные клиента
$orderWC_OrderОбъект заказа

Возвращает: array


maxpos_integration_order_status_notifications

Флаг для поля shouldReceiveOrderStatusNotifications в объекте клиента при экспорте в iiko (уведомления о статусе заказа, в том числе SMS — при настройке в iiko).

ПараметрТипОписание
$valuemixedПо умолчанию: true. Можно вернуть false, true или null (см. ниже)
$orderWC_OrderОбъект заказа

Возвращает: bool|nulltrue/false передаётся в API как boolean; null — поле не включается в JSON (поведение по умолчанию на стороне iiko).

Пример (привязка к чекбоксу на checkout, сохранённому в мета заказа):

php
add_filter( 'maxpos_integration_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 );

maxpos_integration_order_guests

Фильтр количества гостей.

ПараметрТипОписание
$guestsmixedКоличество гостей
$order_idintID заказа

Возвращает: mixed


maxpos_integration_order_items

Фильтр массива позиций заказа при экспорте.

ПараметрТипОписание
$itemsarrayПозиции заказа
$order_idintID заказа

Возвращает: array

Пример:

php
add_filter( 'maxpos_integration_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 );

maxpos_integration_order_discounts

Предоставление кастомных данных о скидках при экспорте.

ПараметрТипОписание
$discountsarraynull
$orderWC_OrderОбъект заказа

Возвращает: array|null


maxpos_integration_order_payments

Предоставление кастомных данных об оплате при экспорте.

ПараметрТипОписание
$paymentsarraynull
$orderWC_OrderОбъект заказа

Возвращает: array|null


maxpos_integration_delivery_point_comment

Переопределение комментария к точке доставки.

ПараметрТипОписание
$commentstringnull
$order_idintID заказа

Возвращает: string|null


maxpos_integration_export_delivery_modifiers

Фильтр модификаторов товара при экспорте доставки.

ПараметрТипОписание
$modifiersarrayМодификаторы товара
$order_itemWC_Order_Item_ProductПозиция заказа

Возвращает: array


maxpos_integration_export_organization_id

Переопределение ID организации при экспорте.

ПараметрТипОписание
$organization_idstringID организации
$orderWC_OrderОбъект заказа

Возвращает: string


maxpos_integration_export_terminal_id

Переопределение ID терминала при экспорте.

ПараметрТипОписание
$terminal_idstringID терминала
$orderWC_OrderОбъект заказа

Возвращает: string


maxpos_integration_import_groups_list

Фильтр списка групп (категорий) номенклатуры при импорте.

ПараметрТипОписание
$limited_groupsarrayСписок групп, подлежащих импорту
$groupsarrayИсходный полный массив групп iiko

Возвращает: array


maxpos_integration_order_export_terminal_id

Переопределение ID группы терминалов при экспорте.

ПараметрТипОписание
$terminal_idstringID группы терминалов
$order_idintID заказа

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_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 );

maxpos_integration_order_table_ids

Предоставление ID столов для заказа (режим ресторана).

ПараметрТипОписание
$table_idsarraynull
$order_idintID заказа

Возвращает: array|null


maxpos_integration_order_cheque_additional_info

Фильтр дополнительной информации для чека.

ПараметрТипОписание
$infoarraynull
$order_idintID заказа

Возвращает: array|null


maxpos_integration_checkout_settings

Фильтр настроек модуля оформления заказа.

ПараметрТипОписание
$settingsarrayКонфигурация checkout

Возвращает: array


maxpos_integration_plugin_subheader

Фильтр HTML подзаголовка на странице плагина в админке.

ПараметрТипОписание
$htmlstringHTML подзаголовка

Возвращает: string


maxpos_integration_kbzhu

Фильтр вывода шорткода КБЖУ (пищевая ценность).

ПараметрТипОписание
$htmlstringСформированный HTML
$product_kbzhuarrayДанные КБЖУ товара

Возвращает: string


Экшены

maxpos_integration_loaded

Вызывается после полной загрузки плагина.

Параметры: нет

Пример:

php
add_action( 'maxpos_integration_loaded', function () {
    // Кастомная инициализация после загрузки плагина
} );

maxpos_integration_iiko_provider_init

Вызывается при инициализации провайдера iiko, позволяет переопределить настройки или данные провайдера.

ПараметрТипОписание
$providerIiko_ProviderЭкземпляр провайдера

maxpos_integration_add_plugin_page_fieldsets

Добавление кастомных блоков полей на страницу плагина в админке.

Параметры: нет

Пример:

php
add_action( 'maxpos_integration_add_plugin_page_fieldsets', function () {
    echo '<fieldset>...</fieldset>';
} );

maxpos_integration_created_delivery

Вызывается после создания доставки в iiko.

ПараметрТипОписание
$created_deliveryarrayОтвет API iiko
$order_idintID заказа WooCommerce
$organization_idstringID организации iiko

Пример:

php
add_action( 'maxpos_integration_created_delivery', function ( $created_delivery, $order_id, $organization_id ) {
    // Логирование или синхронизация после экспорта
}, 10, 3 );

Хуки плагина maxpos-integration-pro (дополнительные модули)

Фильтры

maxpos_integration_checkout_field_titles

Единый фильтр заголовков блоков оформления заказа в дополнительных модулях: модификаторы на карточке товара, зоны доставки, время «готовить к», стол, сдача, количество гостей.

ПараметрТипОписание
$titlesarrayАссоциативный массив: ключ блока ➔ строка заголовка

Ключи по умолчанию: modifiers, delivery_zones, time, tables, change, guests.

Возвращает: array — полный массив заголовков (переданные в колбэке ключи переопределяют значения по умолчанию).

Пример:

php
add_filter( 'maxpos_integration_checkout_field_titles', function ( $titles ) {
    $titles['modifiers'] = 'Добавь по вкусу / не забудь добавить начинки';
    $titles['guests']    = 'Гостей';
    return $titles;
} );

maxpos_integration_delivery_zones_full_address

Фильтр полного адреса, используемого в модуле Зоны доставки.

ПараметрТипОписание
$addressstringПолный адрес плательщика

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_delivery_zones_full_address', function ( $address ) {
    return str_replace( 'город Воронеж ', '', $address );
} );

maxpos_integration_default_city

Фильтр города по умолчанию для модуля Зоны доставки (Яндекс.Карты).

ПараметрТипОписание
$citystringНазвание города по умолчанию

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_default_city', function ( $city ) {
    return ''; // Убрать город по умолчанию
} );

maxpos_integration_city_suggest_prefix

Префикс для запросов к API подсказок городов.

ПараметрТипОписание
$prefixstringПо умолчанию: ''

Возвращает: string

Пример:

php
add_filter( 'maxpos_integration_city_suggest_prefix', function ( $prefix ) {
    return 'Брянский район, ';
} );

maxpos_integration_suggest_offset

Фильтр смещения для подсказок адресов (Яндекс).

ПараметрТипОписание
$offsetarrayПо умолчанию: [ 0, 36 ]

Возвращает: array

Пример:

php
add_filter( 'maxpos_integration_suggest_offset', function ( $offset ) {
    return [ 0, 36 ]; // Смещение для карты
} );

maxpos_integration_suggest_results

Фильтр количества результатов подсказок.

ПараметрТипОписание
$countintПо умолчанию: 3

Возвращает: int


maxpos_integration_map_address_messages

Фильтр сообщений, связанных с адресом, для карты в модуле Зоны доставки.

ПараметрТипОписание
$messagesarrayКлючи: inaccurate_address_text, specify_house_number_text и др.

Возвращает: array


maxpos_integration_map_shipping_messages

Фильтр сообщений, связанных с доставкой, для модуля Зоны доставки.

ПараметрТипОписание
$messagesarrayКлючи: can_order_text, minimum_order_text, no_zone_found_text

Возвращает: array


maxpos_integration_complete_before_types

Фильтр опций «готовить к» (Как можно скорее / К определённому времени).

ПараметрТипОписание
$optionsarrayКлючи: billing_complete_before_asap, billing_complete_before_btt

Возвращает: array

Пример:

php
add_filter( 'maxpos_integration_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( 'maxpos_integration_complete_before_minutes_offset', fn() => 60 * 24 * 2 ); // 2 дня
            break;
        }
    }
    return $options;
} );

maxpos_integration_complete_before_minutes_offset

Фильтр шага минут для выбора времени (например, округление до 30 мин).

ПараметрТипОписание
$minutesintПо умолчанию: 30

Возвращает: int

Пример:

php
add_filter( 'maxpos_integration_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;
} );

maxpos_integration_delivery_switch_types

Фильтр опций переключения типа доставки (модуль «Зоны доставки»).

ПараметрТипОписание
$optionsarrayОпции переключения

Возвращает: array

Пример:

php
add_filter( 'maxpos_integration_delivery_switch_types', function ( $options ) {
    asort( $options ); // Изменить порядок опций
    return $options;
} );

Фильтры WooCommerce (maxpos-integration-pro)

Методы доставки maxpos_integration_local_pickup и maxpos_integration_courier используют стандартные фильтры WooCommerce:

  • woocommerce_shipping_maxpos_integration_local_pickup_is_available — фильтр доступности метода доставки самовывоза.
  • woocommerce_shipping_maxpos_integration_courier_is_available — фильтр доступности метода доставки курьером.

maxpos_integration_compatibility_version

Фильтр для переопределения версии основного плагина (maxpos-integration) при проверке совместимости дополнительных модулей. Это технический фильтр, полезный в первую очередь разработчикам для моков и тестов.

ПараметрТипОписание
$versionstringВерсия основного плагина из константы MAXPOS_INTEGRATION_VERSION

Возвращает: string — подменённая версия (например, '3.0.0').