Перейти к содержимому Перейти к боковой панели

Это форум технической поддержки WPML – плагина для многоязычной WordPress.

Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.

Sun Mon Tue Wed Thu Fri Sat
- 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 9:00 – 13:00 -
- 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 14:00 – 18:00 -

Часовой пояс службы поддержки: Europe/Kyiv (GMT+02:00)

Эта тема содержит 3 ответов, имеет 0 voices.

Последнее обновление: Andrey 2 дня, 4 часа назад.

При содействии: Andrey.

Автор Сообщения
8 января, 2026 в 11:07 дп #17712584

volodymyrZ-4

Здравствуйте.

Мы столкнулись с проблемой синхронизации остатков товаров в WooCommerce при использовании WPML и обновлении stock через внешний источник.

Описание окружения

WooCommerce

WPML + WooCommerce Multilingual

Основной язык магазина: русский

Дополнительные языки: английский, эстонский, финский

Остатки товаров синхронизируются из MSI (ConnectPOS) в WooCommerce через webhook / API

Товары переведены через WPML (это не отдельные независимые товары)

Описание проблемы

Если остаток товара в MSI равен 0 и мы изменяем его на положительное значение в MSI:

синхронизация с WooCommerce происходит сразу

остаток корректно обновляется только у товара на основном языке (RU)

переводы товара (EN / ET / FI):

не получают обновление _stock и _stock_status

остаются со статусом «Нет в наличии»

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

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

Ожидаемое поведение

При программном обновлении остатков (через webhook / API / импорт):

остатки и статус наличия должны автоматически синхронизироваться между всеми переводами товара

все языковые версии одного товара должны иметь одинаковый stock и stock status

Вопросы

Есть ли в WPML / WooCommerce Multilingual настройка, которая отвечает за автоматическую синхронизацию _stock и _stock_status между переводами при программном обновлении товара (не через ручное сохранение)?

Существует ли официальный хук / action / функция WPML или WCML, которую необходимо вызывать после обновления stock, чтобы принудительно инициировать синхронизацию на всех языках?

Какой рекомендуемый WPML-подход для мультиязычного магазина, если остатки обновляются сторонней системой (POS / ERP) через webhook?

Возможное временное решение

Если проблема связана с тем, что при программном обновлении stock не вызываются необходимые хуки WPML/WCML, подскажите, пожалуйста:

можно ли принудительно вызвать эти хуки после изменения _stock / _stock_status

существует ли рекомендуемый сниппет (workaround) от WPML, который:

отлавливает изменение остатков товара

и синхронизирует stock / stock status между всеми переводами

Мы понимаем, что источник обновления — сторонний плагин, но будем благодарны за любой рекомендованный временный подход со стороны WPML.

При необходимости можем предоставить видео с воспроизведением проблемы и доступ к тестовому товару.
скрытая ссылка

Также получили ответ от поддержки ConnectPos где они подтвердили что синхронизация происходит только по ID товара на основном языке, соответственно данные не меняются на других ID

MSI only handles RU products. Even though the RU and ENG products share the same SKU, they still have different product IDs. When you update inventory through MSI, the system updates inventory based on product ID, not SKU.
Because of this, the inventory sync only affects the RU product ID, which is why you can see the update on the RU items but not on the ENG items.
Just to confirm the way they update based on which attribute/criteria ?

Возможно у вас уже имеется какое то решение в виде сниппета который бы вызывал хуки если бы изменения поступали бы по REST API от ConnectPOS MSI to Woo и принужительно бы проверял другие вариации переводов.

Заранее спасибо за помощь.

8 января, 2026 в 2:39 пп #17713363

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+02:00)

Спасибо за обращение в службу поддержки WPML.

Поведение, которое Вы описываете, является ожидаемым. WPML не может автоматически определить, что остатки товара (stock) обновляются через внешний источник. По этой причине синхронизация пользовательских полей с его переводами, связанных с остатками, происходит только после обновления товара в админ-панели (например, при сохранении товара).

Синхронизация через админ-панель

Вы можете также вручную запустить синхронизацию остатков в админ-панели WordPress:

WooCommerce → WPML Multilingual & Multicurrency for WooCommerce → Status → Troubleshooting
и нажать опцию “Synchronize stock for products and product variations”.

Синхронизация через код

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

Например, для синхронизации конкретного пользовательского поля (например, _stock или _stock_status) для определённого товара можно использовать:

do_action( 'wpml_sync_custom_field', $post_id, $custom_field );

Документация:
https://wpml.org/wpml-hook/wpml_sync_custom_field/

Если требуется синхронизировать все пользовательские поля для конкретного товара, можно использовать следующий хук:
https://wpml.org/wpml-hook/wpml_sync_all_custom_fields/

8 января, 2026 в 2:56 пп #17713394

volodymyrZ-4

Здравствуйте Андрей! С новым годом вас и рождеством.

Спасибо за ваш ответ.

К Сожалению я не смог найти WooCommerce → WPML Multilingual & Multicurrency for WooCommerce → Status → Troubleshooting
и нажать опцию “Synchronize stock for products and product variations

Можете пожалуйста показать скринами каждоей действие? Мне очень нужно чтобы сток синхронизирован был. Пусть даже если вручную запускать процесс или возможно сделать чтобы автоматически через CRON например раз в сутки ночью? У меня в Woocommerce только WCML, но там нет остальных функций о которых вы написали.

8 января, 2026 в 3:15 пп #17713443

Andrey
Сторонник WPML с 06/2013

Языки: Английский (English ) Русский (Русский )

Часовой пояс: Europe/Kyiv (GMT+02:00)

Спасибо, Вас также с новым годом!

К Сожалению я не смог найти WooCommerce → WPML Multilingual & Multicurrency for WooCommerce → Status → Troubleshooting
и нажать опцию “Synchronize stock for products and product variations

Прикрепил скриншоты.

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

WPML-Multilingual-Multicurrency-for-WooCommerce-‹-woosite-—-WordPress(1).png
WPML-Multilingual-Multicurrency-for-WooCommerce-‹-woosite-—-WordPress.png