Woo-poly-integration: Письмо с заказом на английском языке не содержит информации об изменениях

Созданный на 31 мая 2017  ·  14Комментарии  ·  Источник: hyyan/woo-poly-integration

Я использую 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 имя продукта!

Я рад опробовать любые идеи и добавить отладочные сообщения.

Все 14 Комментарий

Пожалуйста, попробуйте еще раз с последней версией, которая теперь выпущена как Hyyan WooCommerce Polylang Integration 1.0.
Первый набор изменений wooCommerce 3.0 не включал тщательного анализа вариантов.

Сказав это, я просто повторно тестирую его и в своей простой тестовой установке:

  • электронное письмо владельцу магазина содержит подробные сведения о вариациях
  • электронное письмо клиенту не содержит подробных сведений об изменении

Если я затем отключу и woo-poly-integration, и polylang, я получу тот же результат ... так что это есть в самих шаблонах WooCommerce.
поэтому, если вам нужно, вы можете изменить шаблон или поднять вопрос в WooCommerce.

Пожалуйста, проверьте и подтвердите здесь.

Я сделал тестовый заказ, и информации о вариациях не было ни в одном электронном письме.
Могу ли я что-нибудь сделать, чтобы помочь вам решить эту проблему?

Что ж, если вы подтверждаете, что информация о вариациях отсутствует в электронном письме, когда Polylang и woo-poly отключены, тогда это не проблема с этим плагином ...

Я отключил woo-poly и теперь вижу информацию о вариантах в письме администратору.
например, "Бандана для собак" Военно-морской флот "- 26 дюймов" (где "26 дюймов" - информация о вариации).

Я снова включил woo-poly, и информация о вариациях снова исчезла.

Дополнительная информация:

  • Подробности об изменениях всегда отображаются при оформлении заказа.
  • Детали варианта не отображаются на странице получения заказа, когда активен woo-poly.
  • Вариация деталь не адреса электронной почты администратора , когда свататься-поли активно.
  • Подробная информация о вариациях отсутствует в электронной почте клиента, когда woo-poly активна (она есть, когда woo-poly неактивна, в отличие от того, что вы заметили).

было это на основном языке или на втором языке?

Базовый язык.
Вы хотите, чтобы я попробовал это на втором языке? (на сайте всего 2 активных языка - английский и немецкий).

Хорошо, вот в чем проблема:

Order.php l. 118 ** функция translateProductNameInOrdersDetails
пытается проявить смекалку и добавить ссылки на каждую позицию заказа, чтобы вернуться к деталям продукта, а также [не может] перевести название варианта.

Вы можете сказать это, добавив первую строку этой функции:
return $name;

Вы получите название варианта продукта в электронном письме и т. Д., Но оно всегда будет на базовом языке магазина.

На первый взгляд, добавление ссылок на продукты кажется приятной особенностью, и действительно кажется ужасным, что стандартные электронные письма клиентов WooCommerce вообще не содержат никаких ссылок (!!), однако, вероятно, это не должно быть задачей этого плагина. чтобы изменить шаблоны электронной почты таким образом.
И, вероятно, есть причина, по которой wooCommerce этого не делает: клиент может хранить электронное письмо в качестве квитанции на протяжении долгого времени, но продукт может быть отредактирован позже, чтобы он больше не соответствовал ссылке. Это выглядит плохо, если клиент позже нажмет на старое электронное письмо с заказом.
Так что я мог бы сделать это вариантом ...

У меня тоже есть причина очевидного непоследовательного поведения:

  • стандартная функциональность wooCommerce использует product-> get_name (), который, по-видимому, происходит от wp_posts.post_title
    Обычно вы не видите название варианта в этом поле, поэтому его сложно отследить, однако фактические названия вариантов могут зависеть от того, какие версии интеграции WooCommerce и WooCommerce Polylang были установлены во время создания или сохранения вариантов.

По наблюдениям, у меня в магазине, построенном за последний год, есть следующие форматы:

  • [название продукта] переведено, но нет информации об изменениях
  • Вариант № [идентификатор_варианта] [название продукта]
  • [название продукта] [название варианта] непереведенное название варианта
  • [название продукта] [название варианта] переведенное название варианта

Итак, правильное решение может иметь следующие элементы:

  • определите правильное название варианта и убедитесь, что оно правильно установлено при сохранении / обновлении продукта
  • создать скрипт для восстановления правильных названий вариантов продукта и кода, чтобы запустить его ровно один раз при обновлении плагина
  • затем функция translateProductNameInOrdersDetails может быть удалена, поскольку имя будет правильным изначально ...

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

В 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

  1. Создайте атрибут продукта, например цвет, используя термины черный и синий.
  2. Создайте новый продукт с вариациями для черного и синего цветов
  3. Измените термин Blue на NewBlue
  4. Посмотреть продукт - теперь он показывает вариант «NewBlue»
  5. Добавить в корзину, просмотреть корзину
  6. В корзине отображается: Варианты тестовой синхронизации - синий
    цвет: NewBlue
  7. Теперь отредактируйте продукт, например измените заголовок….
    Заголовок варианта никогда не будет полностью сброшен и останется со старым значением атрибута, потому что код WooCommerce выполняет поиск-замену только в старом заголовке продукта, он никогда полностью не перестраивает заголовок.
    Как бы сильно не изменился атрибут продукта, заголовок никогда не сбрасывается:
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_
Имя атрибута - _Испанский термин вариации_

Была ли эта страница полезной?
0 / 5 - 0 рейтинги