将基于送货方式的自定义文本添加到某些 WooCommerce 电子邮件通知
Posted
技术标签:
【中文标题】将基于送货方式的自定义文本添加到某些 WooCommerce 电子邮件通知【英文标题】:Add custom text based on shipping method to certain WooCommerce email notifications 【发布时间】:2022-01-06 05:08:12 【问题描述】:我正在尝试让 WooCommerce 向客户发送不同的电子邮件,具体取决于他们是否选择了“收集”或任何交付方式。
如果客户选择取货,“处理中”电子邮件必须告诉他们一旦准备好就会收到通知,“已完成”电子邮件必须告诉他们前来取货。
如果客户选择送货,“处理中”电子邮件必须告诉他们在送达途中会收到通知,而“已完成”电子邮件必须告诉他们送达途中。
目前,我有以下代码,两封电子邮件都没有任何内容。
我不确定我的错误是什么,我也不确定我是否使用正确的变量名来引用我的运输方式。
add_action ('woocommerce_email_customer_details', 'custom_email_customer_details', 15, 4);
function custom_email_customer_details( $order, $sent_to_admin, $plain_text, $email )
if ( $order->has_shipping_method('Pickup from PnP Honey Junction') && $new_status == 'processing' )
echo "<h2>Shipping notice</h2>
<p>You will be notified when to collect your order</p>";
elseif($order->has_shipping_method('Pickup from PnP Honey Junction') && $new_status == 'completed')
echo "<h2>Shipping notice</h2>
<p>Your order is ready for pickup</p>";
elseif ( ! $order->has_shipping_method('Pickup from PnP Honey Junction') && $new_status == 'processing' )
echo "<h2>Shipping notice</h2>
<p>You will be notified when your order is out for delivery</p>";
elseif(! $order->has_shipping_method('Pickup from PnP Honey Junction') && $new_status == 'completed' )
echo "<h2>Shipping notice</h2>
<p>Your order is out for delivery</p>";
【问题讨论】:
【参考方案1】:$new_status
未定义,您使用的运输方式不正确。
要正确应用,最好先获取正确的方法ID,可以通过以下代码完成:
function action_woocommerce_email_customer_details( $order, $sent_to_admin, $plain_text, $email )
// Get the shipping method Id
$shipping_items = $order->get_items('shipping');
$shipping_item = reset( $shipping_items );
echo 'DEBUG INFORMATION: ' . $shipping_item->get_method_id();
add_action( 'woocommerce_email_customer_details', 'action_woocommerce_email_customer_details', 10, 4 );
结果会是这样的:
调试信息:local_pickup然后您将使用此代码替换上面的代码,以定位特定的电子邮件通知,您可以使用$email->id
那么就是在这个答案中应用调试信息了:
function action_woocommerce_email_customer_details( $order, $sent_to_admin, $plain_text, $email )
// For 'processing' & has shipping method 'REPLACE WITH THE DEBUG INFORMATION'
if ( $email->id == 'customer_processing_order' && $order->has_shipping_method( 'local_pickup' ) )
echo __( 'My processing text', 'woocommerce' );
// For 'completed'
elseif( $email->id == 'customer_completed_order' && $order->has_shipping_method( 'local_pickup' ) )
echo __( 'My completed text', 'woocommerce' );
add_action( 'woocommerce_email_customer_details', 'action_woocommerce_email_customer_details', 10, 4 );
【讨论】:
以上是关于将基于送货方式的自定义文本添加到某些 WooCommerce 电子邮件通知的主要内容,如果未能解决你的问题,请参考以下文章
根据 WooCommerce 中的自定义字段值将文本添加到订单摘要
将基于 ACF 字段的自定义“添加到购物车”按钮添加到 WooCommerce 单品页面
以编程方式将 UIButton 添加到带有情节提要的自定义 ViewController