Câu trả lời:
Đây là một giải pháp đơn giản. Tôi móc vào login_headerurl
. Có thể có một cái móc tốt hơn cho cái này nhưng nó hoạt động, Đặt cái này vào hàm của bạn.php:
function wpse_lost_password_redirect() {
// Check if have submitted
$confirm = ( isset($_GET['checkemail'] ) ? $_GET['checkemail'] : '' );
if( $confirm ) {
wp_redirect( home_url() );
exit;
}
}
add_action('login_headerurl', 'wpse_lost_password_redirect');
Những gì nó làm, nó chạy trên login_headerurl
và kiểm tra tham số GET "checkmail" mà bạn nhận được sau khi bạn gửi tên người dùng hoặc email hợp lệ. Sau đó, tôi chuyển hướng bằng cách sử dụng hàm awsome wp_redirect đến home_url .
CẬP NHẬT sau khi bình luận
Nếu bạn muốn chuyển hướng người dùng sau khi gửi mật khẩu mới, bạn chỉ cần sử dụng hook password_reset ở đây là một ví dụ:
function wpse_lost_password_redirect() {
wp_redirect( home_url() );
exit;
}
add_action('after_password_reset', 'wpse_lost_password_redirect');
password_reset
hành động được thực hiện trước khi thực hiện đặt lại mật khẩu thực tế. Tài liệu nóiFires before the user's password is reset.
exit
vì hành động này được thực hiện trước khi mật khẩu được đặt lại.
Câu trả lời "đúng" không hoạt động ở đây vì hành động 'password_reset' kích hoạt trước khi mật khẩu được đặt lại.
Tôi đã sửa đổi câu trả lời đầu tiên, trước khi cập nhật, để làm việc.
function wpse_lost_password_redirect() {
// Check if have submitted
$confirm = ( isset($_GET['action'] ) && $_GET['action'] == resetpass );
if( $confirm ) {
wp_redirect( home_url() );
exit;
}
}
add_action('login_headerurl', 'wpse_lost_password_redirect');
Chỉnh sửa: Không có đủ đại diện để bình luận vì vậy tôi sẽ đăng bài này dưới dạng câu trả lời mới.
Tôi không thể thấy câu trả lời "CẬP NHẬT sau khi bình luận" hoạt động như thế nào.
Tài liệu cho hook 'password_reset' có nội dung "Bắn trước khi mật khẩu của người dùng được đặt lại."
Nếu bạn chuyển hướng, sau đó thoát mật khẩu sẽ không được thay đổi.
Vì tôi có nhu cầu tương tự, tôi đã phát triển giải pháp cho vấn đề này. Chúng tôi vẫn trả lời hook "password_reset" nhưng thay vì thực hiện chuyển hướng ngay lập tức, chúng tôi thêm hook cho bộ lọc "login_url". Và trong bộ lọc này, chúng tôi thêm các chuyển hướng vào trang chủ sau khi người dùng đã đăng nhập.
add_action( "password_reset", "rngs_password_reset", 10, 2 );
/**
* Implement "password_reset" for RNGS
*
* After a password reset has been performed we want the Log in link to redirect the user to the home url.
* When we see this action being run we know that we should be filtering "login_url" to add the redirect the home page.
* We don't filter "login_url" any other time.
*
* @param WP_User $user - the user object
* @param string $new_pass - the new password
*
*/
function rngs_password_reset( $user, $new_pass ) {
add_filter( "login_url", "rngs_login_url", 10, 2 );
}
/**
* Implement "login_url" filter for RNGS
*
* Redirect the user to the home page after logging in
*
* @TODO - make this an option field that controls where the logged in user goes
* @TODO - dependent upon role?
*
* @param string $login_url - the original login_url which is not expected to include "redirect_to" or "reauth"
* @param string $redirect - expected to be null/blank
*/
function rngs_login_url( $login_url, $redirect ) {
$home_redirect = home_url();
$login_url = add_query_arg('redirect_to', urlencode( $home_redirect ), $login_url);
return( $login_url );
}
Có lẽ tôi đang thiếu một cái gì đó trong câu hỏi, nhưng có gì sai khi sử dụng lostpassword_redirect
bộ lọc?
add_filter( 'lostpassword_redirect', 'my_redirect_home' );
function my_redirect_home( $lostpassword_redirect ) {
return home_url();
}
Xem thêm tại đây: https://codex.wordpress.org/Plugin_API/Filter_Reference/lostpassword_redirect
lostpassword_redirect
là bộ lọc cho một URL mà người dùng sẽ đi sau khi anh ta Forgot Password
nhấn nút. Sau đó, anh ta thực sự sẽ đặt lại mật khẩu của mình và khi mật khẩu mới được đặt, OP cần một móc lọc / hành động (có thể là vậy after_password_reset
)
Chuyển hướng đến là một tính năng wordpress bạn không cần tạo plugin cho nó, chỉ cần thêm & redirect_to = url và nó sẽ hoạt động. Thí dụ:
echo '<a href="'home_url().'/wp-login.php?action=lostpassword&redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Forgot Password">'Forgot Password'</a>';