默认情况下,在 WordPress 子站点的登陆界面中,重置密码的链接使用的是主站点的域名。为了让子站点看起来更像是一个独立站点,避免暴露主站点的域名地址,我们可以通过一个插件来修正这个问题。
复制下面的代码,放到 WordPress Mu 的 /wp-content/plugins 目录里,并且在整个网络中启用这个插件即可。
<?php /** * Plugin Name: Multisite: Passwort Reset on Local Blog * Plugin URI: https://gist.github.com/eteubert/293e07a49f56f300ddbb * Description: By default, WordPress Multisite uses the main blog for passwort resets. This plugin enables users to stay in their blog during the whole reset process. * Version: 1.0.0 * Author: Eric Teubert * Author URI: http://ericteubert.de * License: MIT */ // fixes "Lost Password?" URLs on login page add_filter("lostpassword_url", function ($url, $redirect) { $args = array( 'action' => 'lostpassword' ); if ( !empty($redirect) ) $args['redirect_to'] = $redirect; return add_query_arg( $args, site_url('wp-login.php') ); }, 10, 2); // fixes other password reset related urls add_filter( 'network_site_url', function($url, $path, $scheme) { if (stripos($url, "action=lostpassword") !== false) return site_url('wp-login.php?action=lostpassword', $scheme); if (stripos($url, "action=resetpass") !== false) return site_url('wp-login.php?action=resetpass', $scheme); return $url; }, 10, 3 ); // fixes URLs in email that goes out. add_filter("retrieve_password_message", function ($message, $key) { return str_replace(get_site_url(1), get_site_url(), $message); }, 10, 2); // fixes email title add_filter("retrieve_password_title", function($title) { return sprintf( __( '[%s] Password Reset' ), wp_specialchars_decode(get_option('blogname'), ENT_QUOTES) ); });
文章评论