chuyển hướng wordpress sau khi đặt lại mật khẩu


10

Tôi muốn có thể chuyển hướng đến get_bloginfo('url');sau khi đặt lại mật khẩu.

Nhưng tôi không thể tìm thấy bất kỳ câu trả lời hoặc chức năng đơn giản nào để làm điều này.

Có ai biết nếu điều này là có thể?

Cảm ơn Josh

Câu trả lời:


9

Đâ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_headerurlvà 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');

Xin chào Pontus, cảm ơn bạn rất nhiều vì câu trả lời của bạn, điều này sẽ được sử dụng cho lần khác tôi chắc chắn. Nhưng thực tế tôi sau khi chuyển hướng lại sau khi chính passord mới được đặt lại, không phải sau khi gửi email / người dùng. Xem ảnh chụp màn hình này của biểu mẫu mà tôi cần nó để chuyển hướng hoạt động trên ... i.imgur.com/x2IUQ0c.jpg - Cảm ơn
Joshc

Aaah tôi thấy, điều đó thực sự dễ dàng hơn chức năng trước đây. Xem câu trả lời cập nhật của tôi.
Pontus Abrahamsson

Awgh anh bạn, cả hai đều tuyệt vời !! Cảm ơn đã chia sẻ với chúng tôi, nó đã làm việc tại điều trị! Đẹp một.
Joshc

2
Coi chừng việc sử dụng password_resethà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.
Ejaz

2
Phiên bản thứ hai không hoạt động chính xác vì mật khẩu sẽ không thực sự được thay đổi. Bạn phải xóa exitvì hành động này được thực hiện trước khi mật khẩu được đặt lại.
Jon Surrell

10

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.


Điều này nên được đăng như một câu trả lời. Làm tốt lắm.
Christine Cooper

Giải pháp tuyệt vời - làm việc trên MS cũng.
Q Studio

2

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 );
} 

1

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_redirectbộ 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


Những gì bạn đang thiếu ở đây, lostpassword_redirectlà bộ lọc cho một URL mà người dùng sẽ đi sau khi anh ta Forgot Passwordnhấ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)
dev_masta

-1

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&amp;redirect_to='.get_bloginfo('url').'?sli=lost" rel="nofollow" title="Forgot Password">'Forgot Password'</a>';

2
Câu trả lời nên nhiều hơn một đoạn mã. Vui lòng gửi một chỉnh sửa và giải thích lý do tại sao điều này sẽ làm việc.
Gabriel
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.