Это своего рода дополнительный вопрос к вопросу, на который недавно был успешно дан ответ в На странице заказов WooCommerce добавьте пользовательский столбец роли клиента код ответа.
Я пытаюсь посмотреть, можно ли добавить на мой сайт какой-нибудь собственный PHP-код, чтобы роль клиента можно было видеть на странице отдельных заказов. Можно ли отредактировать приведенный ниже код, чтобы он также отображал эти данные на отдельной странице заказа? В идеале я бы хотел, чтобы эта роль была видна только администраторам, а не самим пользователям.
🤔 А знаете ли вы, что...
С PHP можно легко интегрировать с другими технологиями, такими как JavaScript и HTML.
Следующий код может отображать роли пользователей на странице редактирования заказа.
function get_user_role_name( $user_id ) {
// Get the user object
$user = new WP_User( $user_id );
// Get the user's roles
$roles = $user->roles;
// Get the global WordPress roles object
global $wp_roles;
// Initialize an array to hold role names
$role_names = array();
// Loop through the user's roles and get the display names
foreach ( $roles as $role ) {
if ( isset( $wp_roles->roles[$role] ) ) {
$role_names[] = $wp_roles->roles[$role]['name'];
}
}
// Return the role names
return $role_names;
}
add_action( 'woocommerce_admin_order_data_after_payment_info', 'gs_woocommerce_admin_order_data_after_payment_info' );
function gs_woocommerce_admin_order_data_after_payment_info($order){
if ( $order->get_user_id() == 0 ) {
echo '<b>This order was placed by a guest.</b>';
} else {
$role_names = get_user_role_name( $order->get_user_id() );
// Display the role names
if ( !empty( $role_names ) ) {
echo '<b>User Roles:</b> ' . implode( ', ', $role_names );
}
}
}
Мы используем хук действия woocommerce_admin_order_data_after_payment_info
, поэтому роли пользователей будут отображаться так, как показано на скриншоте выше.