好吧,我有一个问题来自客户似乎不可能,但正确设置条件对我来说是一个问题。这是正在发生的事情和我需要的东西。我真的认为这是可能的功能。
商店有一个用户层次结构。有2x超级管理员(ID:admin),5x管理员(ID:admin2),15x银行客户(ID:银行)和2x房地产客户(ID:房地产)。我已经使用ID设置了自定义用户。没有产品有定价。所有商品都在order_info的电子邮件中开具发票。所有东西都在日后付清。所以该网站真的依赖于电子邮件。
我不是最好的PHP,我以前的东西非常草率。
任何帮助?
答案 0 :(得分:0)
您可以在functions.php filr
中使用wc hookadd_action('woocommerce_new_order','send_email_to_admin',1,1); function send_email_to_admin($ order_id){ //使用订单ID查找用户ID并发送电子邮件 }
答案 1 :(得分:0)
使用挂钩在woocommerce_thankyou
操作挂钩中的自定义函数,可以根据用户角色和自定义多个收件人发出有条件的电子邮件通知。
您需要在此功能中替换管理员和超级管理员电子邮件。
您还需要检查3个if语句中的用户角色是否匹配...房地产的ID通常没有空格,而应该是:'real_estate'
这将针对状态为'等待'等待处理'处理'的订单发送电子邮件通知。或者'已完成' ...
触发此自定义电子邮件后,系统会为订单设置自定义字段'_custom_emails_sent'
。
以下是代码:
add_action( 'woocommerce_thankyou', 'custom_new_order_email_notifications', 10, 1 );
function custom_new_order_email_notifications( $order_id ){
// If Custom Emails already sent we exit
if( get_post_meta( $order_id, '_custom_emails_sent', true ) ) return;
$targeted_statuses = array( 'wc-on-hold', 'wc-pending', 'wc-processing', 'wc-completed' );
$order_status = get_post_status( $order_id );
// Only for the correct order statuses; If not we exit
if( ! in_array( $order_status, $targeted_statuses ) ) return;
// HERE (below) replace super admins and admins REAL emails
$super_admin_emails = array(
'supadmin1@example.com', 'supadmin2@example.com' );
$admin_emails = array(
'admin1@example.com', 'admin2@example.com',
'admin3@example.com', 'admin4@example.com', 'admin5@example.com' );
// Get the user of the order
$user_id = get_post_meta( $order_id, '_customer_user', true );
$user = get_userdata( $user_id );
$recipient = '';
// 1. Bank Customers user role
if( in_array('banks', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// 2. Real estate Customers user role
if( in_array('real_estate', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// 3. Admins Customers user role
if( in_array('admin2', $user->roles) ){
$recipients = implode(',', $admin_emails);
}
// Sending new order email notification to the targeted recipients
if( '' != $recipients ){
$mailer = WC()->mailer()->get_emails();
$mailer['WC_Email_New_Order']->recipient = $recipients;
$mailer['WC_Email_New_Order']->trigger( $order_id ); // sending
// We set a custom field that will avoid repetitive sends
update_post_meta( $order_id, '_custom_emails_sent', '1' );
}
}
代码放在活动子主题(或活动主题)的function.php文件中。
经过测试和工作