Skip navigation

Эта тема решена. Вот описание проблемы и ее решения.

Problem:
Клиент столкнулся с необходимостью программно создать копии товаров для другого языка, сохраняя при этом синхронизацию цен и категорий, и возможность независимого редактирования товара на новом языке.
Solution:
Мы рекомендуем использовать хуки WPML для создания дубликатов при создании товара на языке оригинала: wpml_make_post_duplicates и wpml_admin_make_post_duplicates. Для массового дублирования существующих товаров можно воспользоваться функцией в WPML → Translation Management, подробная инструкция доступна здесь: как дублировать страницы и посты массово.
Также, Вы можете отображать на другом языке товары, которые еще не переведены, без необходимости дублирования, используя настройки по умолчанию для непереведенного контента: использование языка по умолчанию как запасного для непереведенного контента.

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

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

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

Помечено: ,

Эта тема содержит 1 ответ, имеет 0 голоса.

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

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

Автор Записи
4 декабря, 2024 на 4:14 пп #16477831

mikalaiH-2

отключение плагинов помогло, спасибо. проблема была в плагине NikanTicket

1. появилась новая проблема. при программном сохранении товара цена не обновляется в другой языковой версии товара
$product->set_regular_price($bundle['price']);

$this->logger->debug(
sprintf('%s SAVE PRODUCT PRICE %s [#%s]', EsimGoCom::LOGGER_PREFIX, $product->get_sku(), $product->get_id()),
['old' => $product_price, 'new' => $bundle['price']]
);
$product->save();
update_post_meta($product_id, sprintf('%s_price', EsimGoCom::POST_META_PREFIX), $bundle['price']);

можно вызвать какую-то функцию для синхронизации цены и других параметров? код запускается через wp cli

2. в настройках wpml есть функция копирования meta полей. если поставить copy то при каждом сохранении woocommerce товара будут обновляться мета поля или только при создании дубля товара?

3. как лучше программно создать копию товара для другого языка? с базового (англ) для ру языка. нужно чтобы при создании дубля товара скопировались все данные товара + мета поля. после создания дубля на другом языке нужно сделать чтобы товар можно было независимо редактировать на русском языке (чтобы можно было менять описание, название, permalink, seo), но осталась синхронизация цены и категорий. нужно как-то массово скопировать 4 тысячи товаров и придется часто дублировать товары, так как товары по апи синхронизируются. может есть какой-то гайд как это правильно сделать через код (wp cli)

5 декабря, 2024 на 8:21 пп #16483704

Andrey
Supporter

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

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

3. как лучше программно создать копию товара для другого языка? с базового (англ) для ру языка. нужно чтобы при создании дубля товара скопировались все данные товара + мета поля. после создания дубля на другом языке нужно сделать чтобы товар можно было независимо редактировать на русском языке (чтобы можно было менять описание, название, permalink, seo), но осталась синхронизация цены и категорий. нужно как-то массово скопировать 4 тысячи товаров и придется часто дублировать товары, так как товары по апи синхронизируются. может есть какой-то гайд как это правильно сделать через код (wp cli)

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

Если же Вам нужно, просто дублировать массово существующие товары, Вы можете перейти в WPML → Translation Management и сделать это. Вот инструкция:
https://wpml.org/documentation/translating-your-contents/displaying-untranslated-content-on-pages-in-secondary-languages/#how-to-duplicate-pages-and-posts-in-bulk

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

Вы также можете рассмотреть опцию отображать на другом языке товары которые еще не переведены (без необходимости дублирования):
https://wpml.org/documentation/translating-your-contents/displaying-untranslated-content-on-pages-in-secondary-languages/#using-the-default-language-as-a-fallback-for-untranslated-content