WooCommerce - торговля - Скрыть адрес доставки при местном самовывозе в электронном письме


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

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

enter image description here

Author: LoicTheAztec, 2016-08-13

1 answers

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

Переопределение шаблонов 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 - has_shipping_method()** метод таким образом:

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

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

&& !$shipping_local_pickup

Ссылки:

 3
Author: LoicTheAztec, 2016-08-14 01:05:41