从版本号 4.5 开始,WordPress Mu 就原生支持独立域名绑定了。前段时间因为要做站群,配置了一个 WordPress Mu ,但发现子站点在 /wp-admin 的「重置密码」链接暴露了主站域名,然而我并不希望暴露主站点的地址,于是找到一个能解决问题的插件。复制下面的代码,放到 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) ); });
原创文章,作者:莫凡,如若转载,请注明出处:https://mihang.org/174.html