Добавьте общий вес заказа в уведомление по электронной почте о новом заказе WooCommerce

Можно ли показать общий вес заказа в электронном письме WooCommerce «Новый заказ» (для администраторов)?


person Regina    schedule 15.08.2017    source источник


Ответы (1)


Вот эта настраиваемая функция, подключенная к хуку действия woocommerce_email_after_order_table, которая будет показывать в электронном уведомлении «Новый заказ» общий вес.

add_action('woocommerce_email_after_order_table','show_total_weight', 10, 4);
function show_total_weight( $order, $sent_to_admin, $plain_text, $email ){

    if ( 'new_order' != $email->id ) return;

    $total_weight = 0;

    foreach( $order->get_items() as $item_id => $product_item ){
        $quantity = $product_item->get_quantity(); // get quantity
        $product = $product_item->get_product(); // get the WC_Product object
        $product_weight = $product->get_weight(); // get the product weight
        // Add the line item weight to the total weight calculation
        $total_weight += floatval( $product_weight * $quantity );
    }

    // Styles
    $style1 = 'style="width: 100%; font-family: \'Helvetica Neue\', Helvetica, Roboto, Arial, sans-serif; color: #737373; border: 1px solid #e4e4e4; border-top:0;"';
    $style2 = '  style="text-align: left; border-top-width: 4px; color: #737373; border: 1px solid #e4e4e4; padding: 12px;border-top:0;"';
    $style3 = ' style="text-align: left; border-top-width: 4px; color: #737373; border: 1px solid #e4e4e4; padding: 12px;border-top:0;"';

    // Output
    echo "<table class='td' cellspacing='0' cellpadding='6' $style1><tr><th $style2>" . __( 'Total weight: ', 'woocommerce' ) . "</th><td $style3>" . $total_weight . " kg</td></tr></table>";
}

Код находится в файле function.php вашей активной дочерней темы (или темы) или также в любом файле плагина.

Код протестирован и работает только в WooCommerce 3+.

Вы получите это (пример снимка экрана):

введите описание изображения здесь

person LoicTheAztec    schedule 16.08.2017
comment
Может ли кто-нибудь сказать мне, как это изменить, чтобы вес был включен в электронное письмо, которое отправляется клиенту, а не в адрес администратора, и с использованием веса тележки вместо веса, удерживаемого против продукта? Могу я использовать $ woocommerce- ›cart-› cart_contents_weight. get_option ('woocommerce_weight_unit')? - person Lyall; 15.03.2019
comment
@Lyall Измените if ( 'new_order' != $email->id ) return; на if ( 'new_order' == $email->id ) return; - person LoicTheAztec; 15.03.2019
comment
Спасибо - я только что нашел один из ваших ответов о поиске идентификатора электронной почты и изменении, который заставил его работать, мне нужно было использовать customer_processing_order для моих нужд. Спасибо еще раз! - person Lyall; 15.03.2019
comment
Подскажите, пожалуйста, как я могу изменить его, чтобы использовать вес $ woocommerce- ›cart-› cart_total (или $ woocommerce- ›cart-› cart_contents_weight) вместо сохраненного веса продукта? Спасибо - person Lyall; 19.03.2019
comment
global $woocommerce и $woocommerce->cart устарели… Используйте WC()->cart->get_cart_contents_weight()… см. Его в WC_Cart Class доступных методах < / а> - person LoicTheAztec; 19.03.2019