将自定义文本添加到本地取货 Woocommerce 订单的特定电子邮件通知
Add a custom text to specific email notification for local pickup Woocommerce orders
我尝试了以下代码,它向所有应该收到 customer_processing_order
和 customer_completed_order
的客户显示一条消息,当 local_pickup
是所选的送货方式时。
我注意到我没有在任何订单元中存储任何 _shipping_method 项目,而只存储类似这样的东西:order_item_type: shipping > method_id > local_pickup:3
如何取回它?
我尝试了这段代码但没有成功:
// testo per Ritiro in Sede
add_action( 'woocommerce_email_order_details', 'my_completed_order_email_instructions', 10, 4 );
function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
if( 'customer_processing_order' != $email->id ) return;
if ( method_exists( $order, 'get_id' ) ) {
$order_id = $order->get_id();
} else {
$order_id = $order->id;
}
$shipping_method_arr = get_post_meta($order_id, '_shipping_method', false);
$method_id = explode( ':', $shipping_method_arr[0][0] );
$method_id = $method_id[0]; // We get the slug type method
if ( 'local_pickup' == $method_id ){
echo '<p><strong>Ritiro in sede</strong></p>';
}
}
这可以通过订单发货项目迭代完成,方法如下:
add_action( 'woocommerce_email_order_details', 'my_completed_order_email_instructions', 10, 4 );
function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
// Only for processing and completed email notifications to customer
if( ! ( 'customer_processing_order' == $email->id || 'customer_completed_order' == $email->id ) ) return;
foreach( $order->get_items('shipping') as $shipping_item ){
$shipping_rate_id = $shipping_item->get_method_id();
$method_array = explode(':', $shipping_rate_id );
$shipping_method_id = reset($method_array);
// Display a custom text for local pickup shipping method only
if( 'local_pickup' == $shipping_method_id ){
echo '<p><strong>Ritiro in sede</strong></p>';
break;
}
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效。
我尝试了以下代码,它向所有应该收到 customer_processing_order
和 customer_completed_order
的客户显示一条消息,当 local_pickup
是所选的送货方式时。
我注意到我没有在任何订单元中存储任何 _shipping_method 项目,而只存储类似这样的东西:order_item_type: shipping > method_id > local_pickup:3
如何取回它?
我尝试了这段代码但没有成功:
// testo per Ritiro in Sede
add_action( 'woocommerce_email_order_details', 'my_completed_order_email_instructions', 10, 4 );
function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
if( 'customer_processing_order' != $email->id ) return;
if ( method_exists( $order, 'get_id' ) ) {
$order_id = $order->get_id();
} else {
$order_id = $order->id;
}
$shipping_method_arr = get_post_meta($order_id, '_shipping_method', false);
$method_id = explode( ':', $shipping_method_arr[0][0] );
$method_id = $method_id[0]; // We get the slug type method
if ( 'local_pickup' == $method_id ){
echo '<p><strong>Ritiro in sede</strong></p>';
}
}
这可以通过订单发货项目迭代完成,方法如下:
add_action( 'woocommerce_email_order_details', 'my_completed_order_email_instructions', 10, 4 );
function my_completed_order_email_instructions( $order, $sent_to_admin, $plain_text, $email ) {
// Only for processing and completed email notifications to customer
if( ! ( 'customer_processing_order' == $email->id || 'customer_completed_order' == $email->id ) ) return;
foreach( $order->get_items('shipping') as $shipping_item ){
$shipping_rate_id = $shipping_item->get_method_id();
$method_array = explode(':', $shipping_rate_id );
$shipping_method_id = reset($method_array);
// Display a custom text for local pickup shipping method only
if( 'local_pickup' == $shipping_method_id ){
echo '<p><strong>Ritiro in sede</strong></p>';
break;
}
}
}
代码进入您的活动子主题(或主题)的 function.php 文件或任何插件文件。
已测试并有效。