WooCommerce — Скрыть почтовый адрес при получении на месте

Как скрыть информационный раздел «Адрес доставки» в электронном письме клиента, если выбран «Местный пикап»?

Я не знаю, как предоставить код для этого.

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

4

Решение

Да это возможно (см. обновление внизу этой страницы)

переопределение шаблонов WooCommerce (копирование плагина WooCommerce templates папка к вашей активной дочерней теме или теме, переименовывая ее woocommerce).
За что пожалуйста не забудьте прочитать соответствующие документы Первый.

После того, как выше правильно сделано, вы должны отредактировать 2 шаблона, расположенных в этом woocommerce папка внутри вашей активной дочерней темы или темы. файлы находятся в:

  1. emails (sub folder) > email-addresses.php (php file).

    Заменить код этого шаблона из строки 19:

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>
  1. emails (sub folder) > plain (sub folder) > email-addresses.php (php file).

    Заменить код этого шаблона из строки 19:

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";
}

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

$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;
}
}

И это в существующем if Заявление о прекращении отображения адреса доставки (для Local Pickup):

&& !$shipping_local_pickup

Обновить: Можно использовать гораздо более компактный код с использованием ** WC_Abstract_Order class — has_shipping_method()** метод сюда:

$shipping_local_pickup = false;
if ( $order->has_shipping_method( 'local_pickup' ) )
$shipping_local_pickup = true;

И это в существующем if Заявление о прекращении отображения адреса доставки (для Local Pickup):

&& !$shipping_local_pickup

Рекомендации:

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]