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