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

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

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

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


person OHSM    schedule 13.08.2016    source источник


Ответы (1)


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

переопределение шаблонов 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, чтобы остановить отображение адреса доставки (для местного самовывоза):

&& !$shipping_local_pickup

Обновление: можно использовать гораздо более компактный код с помощью ** класс WC_Abstract_Order - метод _19 _ ** следующим образом:

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

И это в существующем операторе if, чтобы остановить отображение адреса доставки (для местного самовывоза):

&& !$shipping_local_pickup

Использованная литература:

person LoicTheAztec    schedule 13.08.2016
comment
Если бы я хотел использовать более компактный режим, редактирую ли я те же строки, те же файлы? - person OHSM; 16.08.2016
comment
Как ни странно, я все еще вижу адрес доставки в электронном письме html ... - person OHSM; 16.08.2016
comment
Абсолютный гений и великий человек. Спасибо вам за помощь! - person OHSM; 16.08.2016
comment
похоже, он больше не работает. - person stemon; 10.04.2021