我正在尝试在wooCommerce上的订单表之后添加自定义内容 使用以下代码,"处理订单"one_answers"订单完成"的客户电子邮件。
仅当客户选择"本地拾取"作为运输方法时才能添加它。
function local_pickup_extra_content_email($order, $is_admin_email) {
if ( $is_admin_email ) {
return;
}
if ( ICL_LANGUAGE_CODE == "he" && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
}
}
add_action( 'woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 2 );
没有将内容添加到指定的电子邮件中。它仅被添加到通过WooCommerce订单管理页面手动发送的"订单详细信息/发票"电子邮件。
如何将上述内容添加到上述电子邮件中?我究竟做错了什么?
(主题文件夹中未覆盖的电子邮件模板)
这可以轻松地针对这些电子邮件通知通过丢失的挂钩参数$email
,这样:
add_action( 'woocommerce_email_after_order_table', 'local_pickup_extra_content_email', 10, 4 );
function local_pickup_extra_content_email( $order, $sent_to_admin, $plain_text, $email ) {
// Only for "Processing Order" and "Order Completed" customer emails
if( ! ( 'customer_processing_order' == $email->id || 'customer_completed_order' == $email->id ) ) return;
$lang = get_post_meta( $order->id, 'wpml_language', true );
if ( $lang == 'he' && && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
}
}
此代码在您的活动子主题(或主题)或任何插件文件中的function.php文件中。
测试并起作用
类似的答案:将自定义文本添加到特定的电子邮件通知到本地拾取wooCommerce订单
这是由于我在if语句中的WPML条件而无法工作的:
ICL_LANGUAGE_CODE == "he"
我认为当woocommerce发送电子邮件时,我不认为iCl_language_code存在。为了解决这个问题,我用以下问题在上面的问题中替换了if语句,它像魅力一样奏效:
$lang = get_post_meta( $order->id, 'wpml_language', true );
if ( $lang == 'he' && && strpos( $order->get_shipping_method(), 'Local Pickup' ) !== false) {
echo '<p><strong>Note:</strong> Please wait for telephone confirmation of local pickup.</p>';
}