如何修改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
相关产品推荐
相关产品推荐

