[Ожидание подтверждения пользователя] У нас на сайте используется WPML и тема Woodmart. Для каждого ...
Это форум технической поддержки WPML – плагина для многоязычной WordPress.
Доступно для чтения всем, но только клиенты, купившие WPML, могут оставлять сообщения. Сотрудники WPML отвечают на сообщения форума 6 дней в неделю, 22 часов в сутки.
Предыстория вопроса:
У нас на сайте используется WPML и тема Woodmart. Для каждого товара есть пользовательский таб с ингредиентами и сроком годности (Custom Tab 2 Content). Мы обновляем этот таб на всех товарах через API (по SKU) с помощью собственного скрипта.
Симптомы:
После обновления через API изменения отображаются только на основной (румынской) версии товара, а на русской версии таб остается старым, пока мы вручную не зайдем в продукт и не пересохраним его или не подтвердим перевод в редакторе WPML.
Вопросы:
Как можно автоматически синхронизировать/обновить содержимое пользовательского таба между языками после такого обновления, чтобы на русском языке изменения появлялись сразу, без ручного подтверждения или пересохранения?
Можно ли настроить автоматическую синхронизацию этого кастомного поля между языками после обновления через API, например, с помощью 'Synchronize custom fields' или какого-либо хука WPML?
Какой самый эффективный способ автоматизировать этот процесс для большого количества товаров?
Чтобы автоматизировать синхронизацию содержимого Вашего кастомного таба между языками после обновления через API, можно использовать функциональность WPML и несколько удобных хук‑ов.
Вот рекомендации:
1. Убедитесь, что поле помечено как Copy в WPML
Перейдите в WPML → Settings → Custom fields translation и найдите ваше поле (например, _custom_tab_2_content или ingredient_tab). Задайте режим перевода Copy — это необходимо, чтобы WPML мог автоматически копировать и синхронизировать значение при вызове соответствующих хук‑ов.
2. Используйте хук wpml_sync_custom_field после API‑обновления
После обновления кастомного поля через API, добавьте вызов:
Установить для нужного кастомного поля режим «Copy» в WPML → Settings → Custom fields translation
После обновления вызывать хук do_action('wpml_sync_custom_field', $product_id, '_woodmart_product_custom_tab_content_2');
Проблема в том, что я не могу найти это кастомное поле ни в редакторе товара, ни в настройках WPML. После заполнения вкладки и сохранения товара никакое новое мета-поле не появляется.
Вопрос:
Как называется или где находится мета-поле, в котором тема Woodmart сохраняет содержимое пользовательских вкладок?
Как правильно настроить синхронизацию этого поля между языками через WPML, если оно не отображается в списке кастомных полей?
Моя задача — чтобы содержимое вкладки автоматически копировалось между языками.
Вам нужно сначала точно определить, как называется пользовательское поле, которое Вы обновляете. Пример ниже демонстрирует хук wpml_sync_custom_field, который Вы можете использовать в пользовательском коде для синхронизации этого поля между переводами:
• _custom_tab_2_content — это пример имени пользовательского поля. Вам необходимо заменить его на фактическое имя поля, которое Вы используете в Вашем коде.
• $product_id — это переменная, содержащая ID товара. Замените её на ту переменную, которую Вы используете для хранения ID продукта в Вашем скрипте.