如何一次登录整个WP多站点网络

时间:2015-07-30 作者:tammy

有谁知道一个好的插件可以作为WP-MS网络登录一次吗Super Admin 并且能够切换站点而无需重新登录每个网络和/或每个站点?

谢谢

3 个回复
最合适的回答,由SO网友:tammy 整理而成

@tammy没有。如果你有十几种不同的网络设置,那么没有安全的方法可以一次登录到所有这些设置。如果它们是一个WP安装上的十几个站点,那么当您登录时,您应该通过单个网络登录。

–Alex Older 8月5日10:35

SO网友:Nicolai Grossherr

这与cookie域有关。它是为每个域设置的,这会阻止网络范围的登录。您可以尝试设置COOKIE_DOMAIN 在您的wp-config.php.

例如,将其设置为空,这将阻止WordPress更改每个站点的cookie域:

define( \'COOKIE_DOMAIN\', \'\' );
也许您还需要设置一些其他常量,以使其工作。

define( \'ADMIN_COOKIE_PATH\', \'/\' );
define( \'COOKIEPATH\', \'\' );
define( \'SITECOOKIEPATH\', \'\' );
不要问我缺点,因为我不完全确定。

或者,您可以为所有站点设置一个特定的cookie域:

define( \'COOKIE_DOMAIN\', \'example.com\' );
define( \'ADMIN_COOKIE_PATH\', \'/\' );
define( \'COOKIEPATH\', \'/\' );
define( \'SITECOOKIEPATH\', \'/\' );
设置唯一的cookie哈希可能也是一个好主意:

define( \'COOKIEHASH\', \'unique_cookie_hash_string\' );
如果您有其他WordPress安装使用相同的Cookie域。

更新时间:

从的GitHub页面WP Multi Network 我得到了这个:

单点登录

在您的wp-config.php 跨所有站点共享Cookie&;网络。

// Cookies
define( \'COOKIEHASH\',        md5( \'yourdomain.com\' ) );
define( \'COOKIE_DOMAIN\',     \'yourdomain.com\'        );
define( \'ADMIN_COOKIE_PATH\', \'/\' );
define( \'COOKIEPATH\',        \'/\' );
define( \'SITECOOKIEPATH\',    \'/\' );
define( \'TEST_COOKIE\',        \'thing_test_cookie\' );
define( \'AUTH_COOKIE\',        \'thing_\'          . COOKIEHASH );
define( \'USER_COOKIE\',        \'thing_user_\'     . COOKIEHASH );
define( \'PASS_COOKIE\',        \'thing_pass_\'     . COOKIEHASH );
define( \'SECURE_AUTH_COOKIE\', \'thing_sec_\'      . COOKIEHASH );
define( \'LOGGED_IN_COOKIE\',   \'thing_logged_in\' . COOKIEHASH );
从外观上看,它是通用的WordPress工具,而不是特定于插件的工具,因此可能值得一试。可能是,到目前为止我们做得还不够。

SO网友:Zach Goldsmith

从Wordpress 4.2.4开始,骨库多站点安装MU Domain Mapping 0.5.5 Development PluginMultisite User Managment Plugin 1.1, 通过主域登录将使用户登录到分配给该用户的所有站点(所有站点均为超级管理员用户)。但是,用户访问了子站点以建立cookie和身份验证,这将自动完成。幸运的是,如果在主域上进行身份验证时访问了任何子站点,您可以包含一个解决方案,将用户从所有站点注销。目前我发现,默认情况下,它不会将您从所有站点注销。以下是您可以添加到函数中的内容。主题中的php文件将在注销时破坏网络范围内的用户会话,如下所示:

function clear_session_on_logout() {

$current_user = wp_get_current_user();

// get all sessions for user with ID $user_id
$sessions = WP_Session_Tokens::get_instance($current_user->ID);

// we have got the sessions, destroy them all!
$sessions->destroy_all();
}
add_action(\'clear_auth_cookie\', \'clear_session_on_logout\');
更新网络范围的主题,或者更新整个子站点使用的主题,以便使用主域的wp admin/登录和注销,也是一个好主意。但是,如果您要求用户在登录主域时“如果访问”从每个子站点注销,那么默认的注销挂钩就足够了。

仅供参考:如果您使用超级管理员帐户登录子站点,它不会让您登录到每个站点。我认为这是经过设计的,通过修改主题的登录和注销挂钩,使其始终使用主域,这是一个非常简单的修复方法。如果您希望在登录和注销时重定向回子域,那么也可以为此做一个简单的挂钩。

结束

相关推荐

Select query for a login

我正在尝试创建登录表单,但select query不起作用。WordPress中还有其他语法吗?密码以何种方式散列?我的代码是:if ( isset( $_POST[\'submit\'] ) ) { if ( !$_POST[\'username\'] ) { echo \"You did not complete all of the required fields\"; } else { $username=$_PO