通过以下内容,我尝试向管理员新订单电子邮件通知显示用户角色(代码添加到我的主题的functions.php文件中):
add_filter( 'woocommerce_email_order_details', 'add_user_role_to_admin_new_order_email', 10, 2 );
function add_user_role_to_admin_new_order_email( $order_details, $order ) {
// Get the user role
$user_role = $order->get_customer_role();
// Add the user role to the order details
$order_details .= '<p>User Role: ' . $user_role . '</p>';
return $order_details;
}
但这没有任何效果。我做错了什么?
如何向 WooCommerce 管理员新订单电子邮件通知显示用户角色?
您当前的代码中有多个错误,例如:
woocommerce_email_order_details
是一个动作挂钩,get_customer_role()
方法不存在...相反,请尝试以下操作以在 WooCommerce 新订单电子邮件通知中显示用户角色:
add_action( 'woocommerce_email_after_order_table', 'display_user_roles_to_admin_new_order_email', 10, 4 );
function display_user_roles_to_admin_new_order_email( $order, $sent_to_admin, $plain_text, $email ) {
// Target new order email notification sent to the admin for registered users
if ( 'new_order' == $email->id && $order->get_user_id() > 0 ) {
// Get the WP_User object
$user = $order->get_user();
// display the user role(s) after order table
printf('<p><strong>%s:</strong> %s</p>', _n('User Role', 'User Roles', count($user->roles) ), implode(', ', $user->roles) );
}
}
应该可以。
请注意,一个用户可以分配多个角色。