Добавление пользовательского текста после суммы заказа в заказах и электронных письмах Woocommerce

Я использую это, чтобы отображать настраиваемый текст для клиентов из определенных стран на странице корзины и оформления заказа:

add_filter( 'woocommerce_cart_totals_order_total_html', 'custom_total_message_html', 10, 1 );

function custom_total_message_html( $value ) {
if( in_array( WC()->customer->get_shipping_country(), array('US', 'CA') ) ) {
    $value .= '<small>' . __('My text.', 'woocommerce') . '</small>';
}
return $value;
}

Однако это НЕ добавляет настраиваемый текст после итоговых сумм заказа в простые электронные письма с заказами, которые отправляет Woocommerce. Я знаю, что есть фильтр woocommerce_get_formatted_order_total, но я не могу получить с ним работающую функцию. Как я могу изменить свою функцию выше, чтобы также отображать настраиваемый текст после цены в простых электронных письмах с заказами?


person hara55    schedule 05.01.2021    source источник


Ответы (1)


Для отображения этого настраиваемого текста в заказах и электронных письмах WooCommerce после итогов используйте следующее:

add_filter( 'woocommerce_get_order_item_totals', 'custom_order_total_message_html', 10, 3 );
function custom_order_total_message_html( $total_rows, $order, $tax_display ) {
    if( in_array( $order->get_shipping_country(), array('US', 'CA') ) && isset($total_rows['order_total']) ) {
        $total_rows['order_total']['value'] .= ' <small>' . __('My text.', 'woocommerce') . '</small>';
    }
    return $total_rows;
}

Код находится в файле functions.php активной дочерней темы (или активной темы). Проверено и работает.


Чтобы он работал только с уведомлениями по электронной почте, используйте:

add_filter( 'woocommerce_get_order_item_totals', 'custom_order_total_message_html', 10, 3 );
function custom_order_total_message_html( $total_rows, $order, $tax_display ) {
    if( in_array( $order->get_shipping_country(), array('US', 'CA') ) && isset($total_rows['order_total']) && ! is_wc_endpoint_url() ) {
        $total_rows['order_total']['value'] .= ' <small>' . __('My text.', 'woocommerce') . '</small>';
    }
    return $total_rows;
}

Код находится в файле functions.php активной дочерней темы (или активной темы). Проверено и работает.

person LoicTheAztec    schedule 07.01.2021
comment
Просто для пояснения: первая функция будет отображать текст на странице с благодарностью / полученным заказом и в электронных письмах, но не в корзине при оформлении заказа. Второй будет отображать его только в электронных письмах. И моя исходная функция будет отображать его только в корзине и на странице оформления заказа? - person hara55; 07.01.2021