Listado usuarios con selector
/*// === Permisos para editar memberships ===
function rg_user_can_edit_memberships() {
return current_user_can(‘manage_woocommerce’) || current_user_can(‘edit_posts’); // admin + editor
}// === Shortcode: listado de usuarios con selector de rol que se guarda automáticamente ===
function rg_listado_usuarios_con_selector_rol_guardado() {
if ( ! rg_user_can_edit_memberships() ) {
return ‘No tienes permisos para ver este listado.‘;
}// Evitar cache LiteSpeed
if( !defined(‘DONOTCACHEPAGE’) ) define(‘DONOTCACHEPAGE’, true);
nocache_headers();// Obtener usuarios (excluimos administradores/editores del listado)
$users = get_users(array(
‘role__not_in’ => array(‘administrator’,’editor’),
‘orderby’ => ‘user_registered’,
‘order’ => ‘DESC’
));// Opciones de rol
$roles_options = array(
‘customer’ => ‘Con Acceso’,
‘subscriber’ => ‘Sin Acceso’,
‘pendiente’ => ‘Pendiente’
);ob_start();// Contenedor de mensajes
echo ‘‘;// Buscador
echo ”;echo ‘‘;echo ”;foreach ( $users as $user ) {
$user_id = $user->ID;
$roles = $user->roles;
$primary_role = !empty($roles) ? $roles[0] : ‘subscriber’; // Por defecto subscriber si no tiene rol// Preparar textos para búsqueda/orden: nombre|email en celda usuario
$display_name = esc_html($user->display_name);
$user_email = esc_html($user->user_email);echo ”;// Columna Usuario: nombre y debajo email (mailto), estilo pequeño para el emailecho ”;// Columna Rol con selector
echo ”;echo ”;echo ”;
}echo ‘Usuario Rol Acciones‘. $display_name .’
‘. $user_email .’
‘;
echo ‘‘.esc_html($role_label).’‘;
echo ‘ ‘;
// Botón de eliminar
echo ”;
echo ‘‘;?>}
add_action(‘wp_ajax_rg_change_role_ajax’,’rg_handle_change_role_ajax’);// === AJAX handler para eliminar usuario ===
function rg_handle_delete_user_ajax() {
if(!rg_user_can_edit_memberships()){
wp_send_json_error(‘Sin permisos’);
}$user_id = isset($_POST[‘user_id’]) ? intval($_POST[‘user_id’]) : 0;
$nonce = isset($_POST[‘nonce’]) ? $_POST[‘nonce’] : ”;if(!$user_id || !wp_verify_nonce($nonce,’rg_delete_user_nonce’)){
wp_send_json_error(‘Usuario o nonce inválido’);
}if(wp_delete_user($user_id)){
wp_send_json_success();
} else {
wp_send_json_error(‘No se pudo eliminar el usuario’);
}
}
add_action(‘wp_ajax_rg_delete_user_ajax’,’rg_handle_delete_user_ajax’);*/