公告
财富商城
积分规则
提问
发文
2019-02-18 01:37发布
仙女界的扛把子
How do you hide the "Shipping Address" info section in the customers' processing email if "Local Pickup" is chosen?
I don't know how to provide code for this.
Yes it's possible (see the update at the bottom of this page) …
overriding WooCommerce templates (copying the WooCommerce plugin templates folder to your active child theme or theme, renaming it woocommerce). For that please be sure to read the related docs First.
templates
woocommerce
Once above correctly done, you have to edit 2 templates located in that woocommerce folder inside your active child theme or theme. the files are located in:
emails
(sub folder)
email-addresses.php
(php file)
if ( ! defined( 'ABSPATH' ) ) { exit; } ?><table id="addresses" cellspacing="0" cellpadding="0" style="width: 100%; vertical-align: top;" border="0"> <tr> <td class="td" style="text-align:left; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;" valign="top" width="50%"> <h3><?php _e( 'Billing address', 'woocommerce' ); ?></h3> <p class="text"><?php echo $order->get_formatted_billing_address(); ?></p> </td> <?php // ======================> Here begins the customization $shipping_local_pickup = false; if ( $items_totals = $order->get_order_item_totals() ) { foreach ( $items_totals as $items_total ) { if ( $items_total['value'] == 'Local Pickup' && !$shipping_local_pickup ) $shipping_local_pickup = true; } } // End if ( ! wc_ship_to_billing_address_only() && $order->needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) && !$shipping_local_pickup ) : ?> <td class="td" style="text-align:left; font-family: 'Helvetica Neue', Helvetica, Roboto, Arial, sans-serif;" valign="top" width="50%"> <h3><?php _e( 'Shipping address', 'woocommerce' ); ?></h3> <p class="text"><?php echo $shipping; ?></p> </td> <?php endif; ?> </tr> </table>
plain
if ( ! defined( 'ABSPATH' ) ) { exit; } echo "\n" . strtoupper( __( 'Billing address', 'woocommerce' ) ) . "\n\n"; echo preg_replace( '#<br\s*/?>#i', "\n", $order->get_formatted_billing_address() ) . "\n"; // ======================> Here begins the customization $shipping_local_pickup = false; if ( $items_totals = $order->get_order_item_totals() ) { foreach ( $items_totals as $items_total ) { if ( $items_total['value'] == 'Local Pickup' && !$shipping_local_pickup ) $shipping_local_pickup = true; } } // End if ( ! wc_ship_to_billing_address_only() && $order->needs_shipping_address() && ( $shipping = $order->get_formatted_shipping_address() ) && !$shipping_local_pickup ) { echo "\n" . strtoupper( __( 'Shipping address', 'woocommerce' ) ) . "\n\n"; echo preg_replace( '#<br\s*/?>#i', "\n", $shipping ) . "\n"; }
I have jus added this to detect when Local Pickup is used in an order:
$shipping_local_pickup = false; if ( $items_totals = $order->get_order_item_totals() ) { foreach ( $items_totals as $items_total ) { if ( $items_total['value'] == 'Local Pickup' && !$shipping_local_pickup ) $shipping_local_pickup = true; } }
And this in the existing if statement to stop the display of shipping address (for Local Pickup):
if
&& !$shipping_local_pickup
Update: Is possible to use a much more compact code using the ** WC_Abstract_Order class - has_shipping_method()** method this way: $shipping_local_pickup = false; if ( $order->has_shipping_method( 'local_pickup' ) ) $shipping_local_pickup = true; And this in the existing if statement to stop the display of shipping address (for Local Pickup): && !$shipping_local_pickup
Update: Is possible to use a much more compact code using the ** WC_Abstract_Order class - has_shipping_method()** method this way:
has_shipping_method()
$shipping_local_pickup = false; if ( $order->has_shipping_method( 'local_pickup' ) ) $shipping_local_pickup = true;
References:
最多设置5个标签!
Yes it's possible (see the update at the bottom of this page) …
Once above correctly done, you have to edit 2 templates located in that
woocommerce
folder inside your active child theme or theme. the files are located in:emails
(sub folder)
>email-addresses.php
(php file)
.Replace the code of this template from line 19:
emails
(sub folder)
>plain
(sub folder)
>email-addresses.php
(php file)
.Replace the code of this template from line 19:
I have jus added this to detect when Local Pickup is used in an order:
And this in the existing
if
statement to stop the display of shipping address (for Local Pickup):References: