避免 WordPress Mu 子站点暴露主站点域名

WordPress Mu 子站点登陆界面的「重置密码」链接会暴露主站点的链接,为了让子站点更像是一个独立的 WordPress ,避免暴露主站点域名,需要用到 Eric Teubert 写的一个插件。

从版本号 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

(0)
上一篇 2022年2月1日 下午11:29
下一篇 2022年2月3日 下午9:49

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据