Я использую WordPress 4.7.5, WooCommerce 3.0.7 и основную версию Hyyan WooCommerce Polylang (загруженную 15 мая после внесения изменений в WC 3).
Когда электронные письма с заказом отправляются клиенту и администратору, информация о вариантах отсутствует.
Продукты - это продукты с вариациями, созданными для каждого значения в одном атрибуте.
Для продуктов с более чем одним атрибутом есть варианты, созданные для одного атрибута. В этом случае другая информация атрибут появляется в письме.
Когда я отключаю Hyyan WooCommerce Polylang, в электронных письмах появляется информация о вариантах.
Коробка с продуктом в электронном письме: Бандана для собак Unicorn Fantasy
Когда плагин отключен: Unicorn Fantasy Dog Bandana - 12 дюймов
Я пробовал поэкспериментировать с фильтром woocommerce_order_item_name, чтобы увидеть значение $ item_name, но оно всегда было нулевым!
Я попытался изолировать проблему, отключив вызов add_filter для функции translateProductNameInOrdersDetails в Hyyan \ WPI \ Order.php __construct (), но в результате получилось NULL имя продукта!
Я рад опробовать любые идеи и добавить отладочные сообщения.
Пожалуйста, попробуйте еще раз с последней версией, которая теперь выпущена как Hyyan WooCommerce Polylang Integration 1.0.
Первый набор изменений wooCommerce 3.0 не включал тщательного анализа вариантов.
Сказав это, я просто повторно тестирую его и в своей простой тестовой установке:
Если я затем отключу и woo-poly-integration, и polylang, я получу тот же результат ... так что это есть в самих шаблонах WooCommerce.
поэтому, если вам нужно, вы можете изменить шаблон или поднять вопрос в WooCommerce.
Пожалуйста, проверьте и подтвердите здесь.
Я сделал тестовый заказ, и информации о вариациях не было ни в одном электронном письме.
Могу ли я что-нибудь сделать, чтобы помочь вам решить эту проблему?
Что ж, если вы подтверждаете, что информация о вариациях отсутствует в электронном письме, когда Polylang и woo-poly отключены, тогда это не проблема с этим плагином ...
Я отключил woo-poly и теперь вижу информацию о вариантах в письме администратору.
например, "Бандана для собак" Военно-морской флот "- 26 дюймов" (где "26 дюймов" - информация о вариации).
Я снова включил woo-poly, и информация о вариациях снова исчезла.
Дополнительная информация:
было это на основном языке или на втором языке?
Базовый язык.
Вы хотите, чтобы я попробовал это на втором языке? (на сайте всего 2 активных языка - английский и немецкий).
Хорошо, вот в чем проблема:
Order.php l. 118 ** функция translateProductNameInOrdersDetails
пытается проявить смекалку и добавить ссылки на каждую позицию заказа, чтобы вернуться к деталям продукта, а также [не может] перевести название варианта.
Вы можете сказать это, добавив первую строку этой функции:
return $name;
Вы получите название варианта продукта в электронном письме и т. Д., Но оно всегда будет на базовом языке магазина.
На первый взгляд, добавление ссылок на продукты кажется приятной особенностью, и действительно кажется ужасным, что стандартные электронные письма клиентов WooCommerce вообще не содержат никаких ссылок (!!), однако, вероятно, это не должно быть задачей этого плагина. чтобы изменить шаблоны электронной почты таким образом.
И, вероятно, есть причина, по которой wooCommerce этого не делает: клиент может хранить электронное письмо в качестве квитанции на протяжении долгого времени, но продукт может быть отредактирован позже, чтобы он больше не соответствовал ссылке. Это выглядит плохо, если клиент позже нажмет на старое электронное письмо с заказом.
Так что я мог бы сделать это вариантом ...
У меня тоже есть причина очевидного непоследовательного поведения:
По наблюдениям, у меня в магазине, построенном за последний год, есть следующие форматы:
Итак, правильное решение может иметь следующие элементы:
Логически правильное сохранение имени должно быть лучше, чем попытки перехватить и изменить имя везде, где оно может быть использовано.
В wooCommerce 3.0 для этого тоже есть код:
класс-туалет-продукт-вариация-хранилище данных-CPT-PHP ll.73-83
/**
* If a variation title is not in sync with the parent e.g. saved prior to 3.0, or if the parent title has changed, detect here and update.
*/
if ( version_compare( get_post_meta( $product->get_id(), '_product_version', true ), '3.0', '<' ) && ( $parent_title = get_post_field( 'post_title', $product->get_parent_id() ) ) && 0 !== strpos( $post_object->post_title, $parent_title ) ) {
global $wpdb;
$new_title = $this->generate_product_title( $product );
$product->set_name( $new_title );
$wpdb->update( $wpdb->posts, array( 'post_title' => $new_title ), array( 'ID' => $product->get_id() ) );
clean_post_cache( $product->get_id() );
}
хорошо, это становится сложным, я собирался сообщить об этом в wooCommerce, но 5 дней назад была соответствующая проверка и добавлена в 3.0.8: https://github.com/woocommerce/woocommerce/issues/15315
так что было бы разумно пересмотреть это.
В основном wooCommerce 3.0.7 все еще имеет проблемы с описанием вариантов в корзине и, следовательно, в заказах.
Вот последовательность действий с простым WooCommerce 3.0.7
mysql> select ID, post_title from wp_posts where ID>456;
+-----+---------------------------------------------+
| ID | post_title |
+-----+---------------------------------------------+
| 457 | Test Sync variations 2 |
| 458 | Test Sync variations 2 - Blue |
| 459 | Test Sync variations 2 - Black |
(Атрибут Blue переименован, но описание корзины / заказа никогда не обновляется должным образом)
Как wooCommerce делает ссылку:
При сохранении:
вызовы class-wc-product-variable.php save () l.394
$ this-> data_store-> sync_variation_names ($ this, $ previous_name, $ new_name);
класс-wc-product-variable-data-store-cpt.php sync_variation_names () ll.304 ++
заменяет ли строку в именах, а не новое имя
так что здесь переведенная строка варианта не подбирается, она просто заменяет часть заголовка
В предыдущем комментарии generate_product_title () - это защищенная функция внутреннего класса данных, поэтому ее трудно переопределить извне WooCommerce.
Итак, со всем этим связано то, как работает WooCommerce-Polylang: на уровне вариации WooCommerce-Polylang добавляет свою собственную ссылку, чтобы гарантировать, что детали вариации обычно извлекаются из копии вариации на основном языке - см. Проблему # 168.
Я считаю, что примените временное исправление, используя фильтр «woocommerce_product_variation_get_name».
Упомянутая еще одна любопытная альтернатива - отключить атрибуты продукта в заголовке, что означает, что они должны быть напечатаны после заголовка.
add_filter( 'woocommerce_product_variation_title_include_attributes', '__return_false' );
Однако для меня это не работает.
ОК, ЭТО ИСПРАВЛЕНО В WOOCOMMERCE !!!
протестировано с последним кодом https://github.com/woocommerce/woocommerce "Version 3.1.0-beta"
и ожидается, что он будет выпущен в 3.0.8.
и с отключенной функцией woo-poly translateProductNameInOrdersDetails (),
тогда будет применено исправление woocommerce
Также, если хотел
add_filter ('woocommerce_product_variation_title_include_attributes', '__return_false');
работает в обновленном WooCommerce
Возможно, это WooCommerce 3.1, а не 3.0.8, если посмотреть в блоге woocommerce: https://woocommerce.wordpress.com/
Через две недели с 31 мая дата релиза будет, возможно, 14 июня.
обратите внимание, похоже, что woocommerce / woocommerce # 15315 был удален с 3.0.8 в последнюю минуту, но все еще намечен на 3.1 с более тщательной проверкой.
Таким образом, сведения об изменениях в корзине / заказах могут оставаться нечетными до тех пор.
Типичный результат может быть например:
Название продукта на испанском языке - _English Variation Term_
Имя атрибута - _Испанский термин вариации_