You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改PHP代码在WooCommerce单个订单页显示客户角色(仅管理员可见)

实现WooCommerce单个订单页面显示管理员可见的客户角色

直接将以下PHP代码添加到主题的functions.php文件或自定义插件中即可实现需求:

// 在单个订单页面添加客户角色信息(仅管理员可见)
add_action( 'woocommerce_admin_order_data_after_billing_address', 'display_customer_role_in_admin_order_page', 10, 1 );
function display_customer_role_in_admin_order_page( $order ) {
    // 仅管理员可查看该信息
    if ( ! current_user_can( 'manage_options' ) ) {
        return;
    }

    $user_id = $order->get_user_id();
    
    // 针对注册用户显示角色,访客订单标注为Guest
    if ( $user_id > 0 ) {
        $user = get_user_by( 'id', $user_id );
        $roles = $user->roles;
        $role_display = implode( ', ', $roles );
        
        echo '<div class="address">
                <p><strong>' . __( 'Customer Role:', 'woocommerce' ) . '</strong> ' . esc_html( $role_display ) . '</p>
              </div>';
    } else {
        echo '<div class="address">
                <p><strong>' . __( 'Customer Role:', 'woocommerce' ) . '</strong> ' . __( 'Guest', 'woocommerce' ) . '</p>
              </div>';
    }
}

代码说明:

  • 借助woocommerce_admin_order_data_after_billing_address钩子,将客户角色信息插入到订单页面的账单地址区域后,保持页面布局协调
  • 通过current_user_can('manage_options')判断权限,非管理员直接终止执行,确保信息仅对管理员可见
  • 兼容注册用户与访客订单:注册用户显示其所有角色(多角色用逗号分隔),访客订单标注为"Guest"
  • 使用esc_html()处理角色名称,避免XSS安全风险

内容的提问来源于stack exchange,提问作者Paul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 09:30:56