web-dev-qa-db-ja.com

一度ログインして全体にログインする方法 WP マルチサイトネットワーク

WP-MSネットワークSuper Adminとして一度ログインし、各ネットワークや各サイトに個別に再ログインしなくてもサイトを切り替えることができる優れたプラグインを知っている人はいますか。

ありがとう

1
tammy

それは違います。あなたが数十の異なるネットワーク設定を持っているならば、それらのすべてに一度にログインする安全で安全な方法はありません。それらが1 WPインストール上のダースサイトであるならば、あなたがログインするときあなたは単一のネットワークを介してログインされるべきです。

- アレックスオールド8月5日10時35分

1
tammy

これはCookieドメインと関係があります。ドメインごとに設定されているため、ネットワーク全体のログインはできません。あなたはあなたのCOOKIE_DOMAINwp-config.php定数を設定することを試みることができます。

たとえば、これを空に設定すると、WordPressは各サイトのCookieドメインを変更できなくなります。

define( 'COOKIE_DOMAIN', '' );

それを機能させるためには、他にも定数を設定する必要があるかもしれません。

define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '' );
define( 'SITECOOKIEPATH', '' );

私はそれについて完全に確信がないので、欠点について私に尋ねないでください。

または、すべてのサイトに特定のCookieドメインを1つ設定することもできます。

define( 'COOKIE_DOMAIN', 'example.com' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );

おそらくユニークなクッキーハッシュを設定することもお勧めです。

define( 'COOKIEHASH', 'unique_cookie_hash_string' );

他のWordPressがCookieに同じドメインを使用している場合。

更新:

WP Multi Network のGitHubページから私はこれを得ました:

シングル・サインオン

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のものであり、プラグイン固有のものではないので、試す価値があるかもしれません。可能性がある、私達は今のところ十分にしなかった。

1
Nicolai

実際には。

https://wordpress.org/plugins/share-logins/ /

Pro版もあります

0
samjco

Wordpress 4.2.4以降、 MUドメインマッピング0.5.5開発プラグイン および // - マルチサイトユーザー管理プラグイン1.1 を使用したボーンストックマルチサイトインストールでは、プライマリドメインからログインすることでユーザーが割り当てられているすべてのサイト(スーパー管理者ユーザーとしてのすべてのサイト)。ただし、ユーザーは子サイトにアクセスしてCookieと認証を確立しました。これは自動的に行われます。幸い、プライマリドメインで認証されている間に子サイトが訪問された場合は、すべてのサイトからユーザーをログアウトさせるための回避策を含めることができます。現在のところ、デフォルトではすべてのサイトからログアウトされているわけではありません。あなたのテーマでfunctions.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 /でログインおよびログアウトするために子サイト全体で使用されているテーマを更新することもお勧めです。ただし、プライマリドメインにログインしている間に「訪問した場合」、各子サイトからユーザがログアウトする必要がある場合は、デフォルトのログアウトフックで十分です。

参考:あなたがスーパー管理者アカウントで子サイトにログインした場合、それはすべてのサイトにあなたをログインさせません。これは仕様によるもので、常にプライマリドメインを使用するようにテーマのログインおよびログアウトフックを変更することによる非常に簡単な修正であると私は思います。ログイン時とログアウト時に子ドメインにリダイレクトしたい場合は、これについても簡単なフックをすることができます。

0
Zach Goldsmith