【问题标题】:Hide shipping address on local pickup in WooCommerce email notifications在 WooCommerce 电子邮件通知中隐藏本地取货的送货地址
【发布时间】:2016-12-20 13:10:51
【问题描述】:

如果选择“本地取货”,您如何隐藏客户处理电子邮件中的“收货地址”信息部分?

我不知道如何为此提供代码。

【问题讨论】:

    标签: php wordpress woocommerce shipping email-notifications


    【解决方案1】:

    是的,这是可能的 (请参阅本页底部的更新) ...

    overriding WooCommerce templates(将 WooCommerce 插件 templates 文件夹复制到您的活动子主题或主题,并将其重命名为 woocommerce)。
    为此请be sure to read the related docsFirst

    正确完成上述操作后,您必须编辑位于活动子主题或主题内的 woocommerce 文件夹中的 2 个模板。文件位于:

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

    我刚刚添加了这个来检测订单中何时使用Local Pickup

    $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 class - has_shipping_method()** method 使用更紧凑的代码

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

    这在现有的 if 声明中停止显示送货地址(用于本地取货):

    && !$shipping_local_pickup
    

    参考文献:

    【讨论】:

    • 如果我想使用更紧凑的模式,我是在编辑相同的行、相同的文件吗?
    • 奇怪的是,我仍然在电子邮件 html 中看到“收货地址”...
    • 绝对的天才和伟大的人。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-08-23
    • 2016-12-22
    • 1970-01-01
    • 2018-02-10
    • 2021-05-29
    • 2021-06-08
    • 2015-02-17
    • 2021-06-06
    相关资源
    最近更新 更多