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’);
*/