// 1. Forzar redirección al perfil si tiene la marca add_action('admin_init', function() { $user_id = get_current_user_id(); $page_now = basename($_SERVER['PHP_SELF']); // Si tiene la marca y no está ya en la página de perfil o cerrando sesión if (get_user_meta($user_id, 'necesita_cambio_pass', true) && $page_now !== 'profile.php' && $page_now !== 'admin-ajax.php' && !isset($_GET['action'])) { wp_redirect(admin_url('profile.php?updated=true&reason=password_expired')); exit; } }); // 2. Mostrar un mensaje explicativo en el perfil add_action('admin_notices', function() { if (isset($_GET['reason']) && $_GET['reason'] == 'password_expired') { echo '

Seguridad: Tu contraseña ha caducado por la limpieza de seguridad del 13 de nov. Debes establecer una nueva (distinta a las anteriores) para continuar.

'; } }); // 3. Quitar la marca SOLO cuando el cambio sea exitoso add_action('profile_update', function($user_id) { if (isset($_POST['pass1']) && !empty($_POST['pass1'])) { delete_user_meta($user_id, 'necesita_cambio_pass'); } });