在Woocommerce中,我有一个自定义电子邮件模板(id ='wc_course_order'),可在购买特定产品(在线课程)时发送。
下面我使用一个钩子函数,根据自定义字段(即“学生电子邮件”)的订单元数据添加收件人。它基于this thread answer。
如何将这些收件人添加为BCC并抓住他们的“名字”字段并将其添加到电子邮件正文中,特别是考虑到可以与两个不同的学生姓名/电子邮件一起购买两个数量的课程产品?
行输出为:
"meta_data": [{"id": 652,
"key": "First Name - 1",
"value": "John"},
{"id": 653,
"key": "Last Name - 1",
"value": "Doe"},
{"id": 654,
"key": "Student Email - 1",
"value": "johndoe@example.com"}]
然后对于在同一次购买中注册的额外学生,输出将是“关键”:“名字 - 2”,“价值”:“简”和“...... - 3”等。
我意识到它可以分为两个问题:
我正在使用的全部功能:
add_filter( 'woocommerce_email_recipient_wc_course_order', 'student_email_notification', 10, 2 );
function student_email_notification( $recipient, $order) {
$student_emails = array();
$enroll_num = 0;
// Loop though Order IDs
foreach( $order->get_items() as $item_id => $item_data ){
$course_qty = $item_data->get_quantity();
$q = 1;
while ( $q <= $course_qty){
// Get the student email
$enroll_num++;
$student_email = wc_get_order_item_meta( $item_id, 'Student Email - '.$enroll_num, true );
if( ! empty($student_email) )
$student_emails[] = $student_email; // Add email to the array
$q++;
}
}
// If any student email exist we add it
if( count($student_emails) > 0 ){
// Remove duplicates (if there is any)
$student_emails = array_unique($student_emails);
// Add the emails to existing recipients
$recipient .= ',' . implode( ',', $student_emails );
}
return $recipient;
}
这一切都可以在functions.php
内完成,还是应该在我单独的电子邮件模板文件中完成?
答案 0 :(得分:1)
as&#39; wc_course_order&#39;是一个自定义的电子邮件通知ID,我无法用它进行真正的测试(所以出于测试目的,我自己测试了这个功能时评论了它)...
使用与获取电子邮件相同的方式,我认为我在下面的代码中获得了名字和姓氏(但我不是很确定) ...
现在要将此电子邮件添加为BCC,您必须更改hook:
flow-copy-source -v src dist
代码放在活动子主题(或活动主题)的function.php文件中。经过测试和工作(我无法在100%时对您的代码进行真正的测试,但我希望它能够正常运行)。