Created
March 11, 2014 14:47
-
-
Save strangerstudios/9487278 to your computer and use it in GitHub Desktop.
Updates URLs on susbites and in lost password request emails to point to the subsite where the lost password request started.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/* | |
Plugin Name: Subsite Lostpassword | |
Plugin URI: http://www.paidmembershipspro.com/wp/subsite-lostpassword/ | |
Description: Updates URLs on susbites and in lost password request emails to point to the subsite where the lost password request started. | |
Version: .1 | |
Author: Stranger Studios | |
Author URI: http://www.strangerstudios.com | |
*/ | |
/* | |
Fixes the URL at the bottom of the login page. | |
*/ | |
function sslp_lostpassword_url($url, $redirect) | |
{ | |
$args = array( 'action' => 'lostpassword' ); | |
if ( !empty($redirect) ) { | |
$args['redirect_to'] = $redirect; | |
} | |
$lostpassword_url = add_query_arg( $args, site_url('wp-login.php', 'login') ); | |
return apply_filters( 'lostpassword_url', $lostpassword_url, $redirect ); | |
} | |
add_filter("lostpassword_url", "sslp_lostpassword_url", 10, 2); | |
/* | |
Fixes URL in email that goes out. | |
*/ | |
function sslp_retrieve_password_message($message, $key) | |
{ | |
if ( empty( $_POST['user_login'] ) ) { | |
return $message; //error probably | |
} else if ( strpos( $_POST['user_login'], '@' ) ) { | |
$user_data = get_user_by( 'email', trim( $_POST['user_login'] ) ); | |
if ( empty( $user_data ) ) | |
return $message; //another error condition, no user found | |
} else { | |
$login = trim($_POST['user_login']); | |
$user_data = get_user_by('login', $login); | |
} | |
$user_login = $user_data->user_login; | |
$message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n"; | |
$message .= home_url( '/' ) . "\r\n\r\n"; | |
$message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n"; | |
$message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n"; | |
$message .= __('To reset your password, visit the following address:') . "\r\n\r\n"; | |
$message .= '<' . site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n"; | |
return $message; | |
} | |
add_filter("retrieve_password_message", "sslp_retrieve_password_message", 10, 2); |
To fix this problem, replace like 20 and 21 with:
$lostpassword_url = add_query_arg( $args, site_url('wp-login.php') );
return apply_filters( 'lostpassword_url', $lostpassword_url, $redirect );
I would suggest replacing this in the code itself strangerstudios. It fixes the Internal Server Error (which throws a 520 Unknown Error if you have cloudflare on. Took me some time and good debugging skills to figured this one out).
This seems to not be working in the latest version of Wordpress (multisite)
I wrote my own implementation, if anyone still needs it: https://gist.github.com/eteubert/293e07a49f56f300ddbb
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm seeing the same error as shiyam06 with
in the error log.