Created
February 8, 2015 19:44
-
-
Save ckchaudhary/48885715a34efd2f414b to your computer and use it in GitHub Desktop.
WordPress multisite forgot password url fix
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://webdeveloperswall.com/wordpress/multisite-forgot-password-url-issue/ | |
Description: Updates URLs on susbites and in lost password request emails to point to the subsite where the lost password request started. | |
Version: 1.0 | |
Author: ckchaudhary | |
Author URI: http://webdeveloperswall.com/wordpress/multisite-forgot-password-url-issue/ | |
*/ | |
/** | |
* Major part of the code is taken from https://gist.github.com/strangerstudios/9487278 | |
*/ | |
/* | |
Fixes the URL at the bottom of the login page. | |
*/ | |
function sslp_lostpassword_url($url, $redirect){ | |
if( !is_multisite() ) | |
return $url; | |
$args = array( 'action' => 'lostpassword' ); | |
if ( !empty($redirect) ) { | |
$args['redirect_to'] = $redirect; | |
} | |
$lostpassword_url = add_query_arg( $args, site_url('wp-login.php', 'login') ); | |
return $lostpassword_url; | |
} | |
add_filter("lostpassword_url", "sslp_lostpassword_url", 10, 2); | |
function login_load_jquery(){ | |
wp_enqueue_script( 'jquery' ); | |
} | |
add_action( 'login_enqueue_scripts', 'login_load_jquery', 1 ); | |
function wdw_sslp_lostpassword_form_target_script(){ | |
if( !is_multisite() ) | |
return; | |
?> | |
<script type="text/javascript"> | |
jQuery(document).ready(function($){ | |
$('#lostpasswordform').attr( 'action', '<?php echo add_query_arg( 'action', 'lostpassword', site_url('wp-login.php', 'login') );?>' ); | |
}); | |
</script> | |
<?php | |
} | |
add_action( 'lostpassword_form', 'wdw_sslp_lostpassword_form_target_script' ); | |
/* | |
Fixes URL in email that goes out. | |
*/ | |
function sslp_retrieve_password_message($message, $key){ | |
if( !is_multisite() ) | |
return $message; | |
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); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment