Dưới đây là code hoàn chỉnh để yêu cầu người dùng WordPress thay đổi mật khẩu định kỳ mỗi 6 tháng.
Chức năng chính của code:
Khi người dùng đăng nhập, hệ thống kiểm tra xem mật khẩu đã được thay đổi trong vòng 6 tháng hay chưa.
Nếu chưa thay đổi trong vòng 6 tháng, hệ thống sẽ buộc người dùng cập nhật mật khẩu trước khi tiếp tục sử dụng.
Sử dụng user_meta để lưu thời điểm lần cuối cùng người dùng đổi mật khẩu.
Thêm hook đăng nhập để kiểm tra điều kiện và chuyển hướng đến trang đổi mật khẩu khi cần.
Cách sử dụng
Thêm đoạn code này vào file functions.php
của theme đang sử dụng hoặc tạo plugin riêng.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 | <?php // Định nghĩa thời gian tối đa sử dụng mật khẩu (6 tháng) define('PASSWORD_EXPIRY_DAYS', 180); // Hook kiểm tra khi người dùng đăng nhập add_action('wp_login', 'check_password_expiry', 10, 2); function check_password_expiry($user_login, $user) { // Lấy thời gian đổi mật khẩu lần cuối $last_changed = get_user_meta($user->ID, 'last_password_change', true); // Nếu chưa từng lưu thời gian đổi mật khẩu, đặt giá trị mặc định là hiện tại if (!$last_changed) { update_user_meta($user->ID, 'last_password_change', time()); return; } // Kiểm tra nếu quá hạn 6 tháng $expiry_time = PASSWORD_EXPIRY_DAYS * DAY_IN_SECONDS; if ((time() - $last_changed) > $expiry_time) { // Chuyển hướng người dùng đến trang đổi mật khẩu wp_redirect(home_url('/change-password-required/')); exit; } } // Tạo shortcode hiển thị form đổi mật khẩu bắt buộc add_shortcode('force_password_change', 'force_password_change_form'); function force_password_change_form() { if (!is_user_logged_in()) { return '<p>Bạn cần đăng nhập để thay đổi mật khẩu.</p>'; } // Hiển thị form đổi mật khẩu ob_start(); ?> <form method="post"> <label for="new_password">Mật khẩu mới:</label> <input type="password" id="new_password" name="new_password" required> <br> <label for="confirm_password">Xác nhận mật khẩu:</label> <input type="password" id="confirm_password" name="confirm_password" required> <br> <input type="submit" name="submit_new_password" value="Cập nhật mật khẩu"> </form> <?php // Xử lý đổi mật khẩu if (isset($_POST['submit_new_password'])) { $new_password = sanitize_text_field($_POST['new_password']); $confirm_password = sanitize_text_field($_POST['confirm_password']); if ($new_password !== $confirm_password) { echo '<p style="color:red;">Mật khẩu không khớp. Vui lòng thử lại.</p>'; } elseif (strlen($new_password) < 6) { echo '<p style="color:red;">Mật khẩu phải có ít nhất 6 ký tự.</p>'; } else { $user_id = get_current_user_id(); wp_set_password($new_password, $user_id); update_user_meta($user_id, 'last_password_change', time()); echo '<p style="color:green;">Mật khẩu đã được cập nhật thành công. Vui lòng đăng nhập lại.</p>'; wp_logout(); wp_redirect(wp_login_url()); exit; } } return ob_get_clean(); } |
Hướng dẫn sử dụng
Tạo trang đổi mật khẩu bắt buộc
- Trong admin WordPress, vào Pages → Add New
- Đặt tiêu đề là Đổi mật khẩu bắt buộc (hoặc tùy chỉnh theo ý bạn)
- Trong nội dung, thêm shortcode:
1 | [force_password_change] |
- Xuất bản trang và ghi nhớ URL (ví dụ: /change-password-required/).
Khi người dùng đăng nhập: Nếu chưa đổi mật khẩu trong vòng 6 tháng, hệ thống sẽ tự động chuyển hướng đến trang /change-password-required/ để yêu cầu cập nhật mật khẩu.
Sau khi đổi mật khẩu thành công: Hệ thống lưu lại thời gian cập nhật mới và yêu cầu người dùng đăng nhập lại.
- Tải WP Content Crawler v1.15.0 Miễn Phí
- Cách Ẩn Tab Downloads Trong My Account Của WooCommerce Một Cách Gọn Gàng
- Hướng dẫn Cách Tối ưu SEO Danh Mục Sản Phẩm Website WordPress
- WordPress 6.8 có gì mới? Đánh giá chi tiết & thực tế sau khi trải nghiệm bản cập nhật mới nhất
- Ngôn Ngữ Lập Trình PHP Là Gì? Tìm Hiểu Từ A Đến Z Cho Người Mới Bắt Đầu