在 WooCommerce 电子邮件通知中隐藏本地取货的送货地址
Posted
技术标签:
【中文标题】在 WooCommerce 电子邮件通知中隐藏本地取货的送货地址【英文标题】:Hide shipping address on local pickup in WooCommerce email notifications 【发布时间】:2016-12-20 13:10:51 【问题描述】:如果选择“本地取货”,您如何隐藏客户处理电子邮件中的“收货地址”信息部分?
我不知道如何为此提供代码。
【问题讨论】:
【参考方案1】:是的,这是可能的 (请参阅本页底部的更新) ...
overriding WooCommerce templates(将 WooCommerce 插件
templates
文件夹复制到您的活动子主题或主题,并将其重命名为woocommerce
)。 为此请be sure to read the related docsFirst。
正确完成上述操作后,您必须编辑位于活动子主题或主题内的 woocommerce
文件夹中的 2 个模板。文件位于:
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" >
<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" >
<h3><?php _e( 'Shipping address', 'woocommerce' ); ?></h3>
<p class="text"><?php echo $shipping; ?></p>
</td>
<?php endif; ?>
</tr>
</table>
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
参考文献:
Template Structure + Overriding Templates via a Theme Class WC_Abstract_Order - has_shipping_method()【讨论】:
如果我想使用更紧凑的模式,我是在编辑相同的行、相同的文件吗? 奇怪的是,我仍然在电子邮件 html 中看到“收货地址”... 绝对的天才和伟大的人。感谢您的帮助!以上是关于在 WooCommerce 电子邮件通知中隐藏本地取货的送货地址的主要内容,如果未能解决你的问题,请参考以下文章
在 Woocommerce 订单和电子邮件通知中显示产品品牌和名称