向 WooCommerce 管理员新订单电子邮件通知显示用户角色

问题描述 投票:0回答:1

通过以下内容,我尝试向管理员新订单电子邮件通知显示用户角色(代码添加到我的主题的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 管理员新订单电子邮件通知显示用户角色?

php woocommerce orders user-roles email-notifications
1个回答
0
投票

您当前的代码中有多个错误,例如:

  • woocommerce_email_order_details
    是一个动作挂钩,
  • 函数参数错误(总共有 4 个),
  • WC_Order
    get_customer_role()
    方法不存在...

而是尝试以下方法在 WooCommerce 新订单电子邮件通知中显示用户角色:

add_action( 'woocommerce_email_after_order_table', 'display_customer_role_to_admin_new_order_email', 10, 4 );
function display_customer_role_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>User Role(s): %s</p>', implode(', ', $user->roles) );
    }
}

应该可以。

© www.soinside.com 2019 - 2024. All rights reserved.