我在WooCommerce中设置了自定义状态和自定义电子邮件。我想使用当前电子邮件WC_Email
,而不是当前状态作为电子邮件模板内部的变量。
我需要在电子邮件模板中有一些if语句。我没有使用订单状态来确保订单中的电子邮件是否会手动获得不满,它不会通过单独的电子邮件发送当前订单状态的数据。
我如何在WooCommerce中回声WC_Email
电子邮件ID作为变量?
wooCommerce中不存在wc_order_email
类或函数,因此我更新了您的问题。
您正在查看的是$email
变量参数( WC_Email
当前类型对象)。它主要是在模板和钩子中到处定义的。
要将可用的当前电子邮件ID作为变量,您只需使用$email_id = $email->id
…
要获取自定义电子邮件的当前电子邮件ID,您应该使用此代码(仅适用于 testing ):
add_action( 'woocommerce_email_order_details', 'get_the_wc_email_id', 9, 4 );
function get_the_wc_email_id( $order, $sent_to_admin, $plain_text, $email ) {
// Will output the email id for the current notification
echo '<pre>'; print_r($email->id); echo '</pre>';
}
代码在您的活动子主题(或主题)的function.php文件中或任何插件文件中。
您将获得以下内容之一:
用于WooCommerce默认通知:
-
new_order
-
customer_on_hold_order
-
customer_processing_order
-
customer_completed_order
-
customer_refunded_order
-
customer_partially_refunded_order
-
cancelled_order
-
failed_order
-
customer_reset_password
-
customer_invoice
-
customer_new_account
-
customer_note
-
low_stock
-
no_stock
-
用于WooCommerce订阅:
-
new_renewal_order
-
new_switch_order
-
customer_processing_renewal_order
-
customer_completed_renewal_order
-
customer_on_hold_renewal_order
-
customer_completed_switch_order
-
customer_renewal_invoice
-
cancelled_subscription
-
expired_subscription
-
suspended_subscription
-
用于WooCommerce预订:
-
new_booking
-
booking_reminder
-
booking_confirmed
-
booking_pending_confirmation
-
booking_notification
-
booking_cancelled
-
admin_booking_cancelled
-
对于WooCommerce会员资格:
-
WC_Memberships_User_Membership_Note_Email
-
WC_Memberships_User_Membership_Ending_Soon_Email
-
WC_Memberships_User_Membership_Ended_Email
-
WC_Memberships_User_Membership_Renewal_Reminder_Email
-
WC_Memberships_User_Membership_Activated_Email
-
获得正确的电子邮件ID slug 为您的自定义电子邮件通知,您可以在任何以下挂钩上使用它(而不是覆盖电子邮件模板):
-
woocommerce_email_header
(2个参数:$email_heading
,$email
) -
woocommerce_email_order_details
(4个参数:$order
,$sent_to_admin
,$plain_text
,$email
) -
woocommerce_email_order_meta
(4个参数:$order
,$sent_to_admin
,$plain_text
,$email
) -
woocommerce_email_customer_details
(4个参数:$order
,$sent_to_admin
,$plain_text
,$email
) -
woocommerce_email_footer
(1参数:$email
)
在这里代码的示例我定位"新订单"。仅电子邮件通知:
add_action( 'woocommerce_email_order_details', 'add_custom_text_to_new_order_email', 10, 4 );
function add_custom_text_to_new_order_email( $order, $sent_to_admin, $plain_text, $email ) {
// Only for "New Order" email notifications (to be replaced by yours)
if( ! ( 'new_order' == $email->id ) ) return;
// Display a custom text (for example)
echo '<p>'.__('My custom text').'</p>';
}
代码在您的子主题的functions.php文件中(或插件)。