複数のWordpress Webサイトでユーザーデータを共有する最良の方法は何ですか?


10

まず第一に、マルチサイトは私が探しているものではありません。ユーザーアカウントを有効にする個別のドメインで、Wordpressをすべて使用する5つのWebサイトがあります。ユーザーデータをネットワーク全体で共有する必要があります。ユーザーがアカウントを作成すると、他のすべてのWebサイトにもすぐにアクセスできます。マルチサイトを使用しているとき、Wordpressが私がやろうとしていることはお勧めできません。

強く相互接続されている、データを共有している、またはユーザーを共有しているサイトの作成を計画している場合は、マルチサイトネットワークが最適なソリューションではない可能性があります。- http://codex.wordpress.org/Before_You_Create_A_Network(第一項、第三の文)

ここhttp://wordpress.org/support/topic/multiple-sites-same-users-howとここhttp://xentek.net/articles/528/で述べた「共有ユーザーテーブルトリック」を使用してみましたimplementation-the-wordpress-shared-users-table-trick /および他の多くの場所...問題は、この情報が2〜7年前のものであり、Wordpress 3.5.1を使用していて、この「トリック」が動作しないようです。

このコードをwp-configの$table_prefix行の周りに挿入しようとしました。

define('CUSTOM_USER_TABLE', 'wp_users');
define('CUSTOM_USER_META_TABLE', 'wp_usermeta');

簡単に言えば、管理側の2番目のサイトにログインできないため、このトリックは機能しないと思います。

このデータをリンクするための最良の方法について何か提案はありますか?


1
動作しない理由CUSTOM_USER_TABLE
わかり

CUSTOM_USER_TABLEを使用すると、ユーザーはWebサイト間で共有されますが、2番目のWebサイトでは、管理者としてログインできません。何時間も探し回って2〜7年前のプラグインや記事を見つけると、このトリックは3.5.1では機能しないと思います...
Ian

問題は、これはトリックではなく、コア機能であるということですバグは報告されておらず、[wp-hackers]リストに関連するもの何も表示されていないようです...
brasofilo

コメントしてくれてありがとう。私はあなたのリンクで見たいくつかの事柄をさらに詳しく調べて答えを見つけることができました。以下に私の解決策を掲載しました。再度ありがとう@brasofilo
Ian

ユーザーを共有する方法のすべての方法をほぼカバーしました。しかし、ここでは少し異なる状況が発生します。Ive 5ワードプレスWebサイト。特定のWebサイトごとに独自のデータベースがあります。新しいユーザーが5つのWebサイトのいずれかに登録するときに、ソリューションを使用してすべての個別のユーザーテーブルをどのように接続できますか?彼は単一の登録を使用して他のWebサイトにすぐにログインできますか?WPMUを使用してこれを単一のデータベースで実現するいくつかの方法を知っていますが、ワードプレスの個別のインストールでそれを行う方法を実際には見つけていません。どんな助けでも明言します。ありがとう

回答:


8

わかりました、まず第一に、私は馬鹿のように感じますが、これについて話すほとんどの記事は、この作品を作る上で非常に重要な詳細について言及していません。答えは、データベースの少なくとも1人の管理者に権限を設定する必要があるということです。この情報は、こちらのコーデックスにあります:http : //codex.wordpress.org/Editing_wp-config.php#Custom_User_and_Usermeta_Tables

wp-config.phpファイルを設定した後、マスターusermetaテーブル(私の場合はwp_usermeta)のフィールドwp_capabilities行とmeta_value列を変更する必要があります。これはphpMyAdminを介して行います。

注:これは、少なくとも1人のユーザー管理者がログインする場合に実行してください。いったんログインすると、他のすべてのユーザー/管理者ロールをバックエンドから調整できます。

変更されるユーザー権限のスクリーンショット

作成されるWebサイトごとに、新しいサイトのプレフィックスに管理者ユーザーの役割を割り当てる必要があります。

私の場合、現時点では2つのサイトでのみ機能しているため、次のようになります。

a:1:{s:13:"administrator";s:1:"1";}
tbs_capabilities = a:1:{s:13:"administrator";s:1:"1";}

wp_usermeta値のスクリーンショット

1行目はデフォルトのテーブル接頭辞(この場合はwp_)の権限を設定し、2行目は2番目のWebサイト(この場合はtbs_接頭辞付き)の権限を設定します。

私の問題を最終的に解決するためにもう少し掘り下げることを私に指摘したコメントのbrasofiloに感謝します!

この答えが私と同じ問題を抱えていた他の人の助けになることを願っています。


この機能を使用したことはありませんが、機能させるためのこの小さなトリックがあることを知って嬉しく思います;)素敵な記事+1
ブラソフィロ

1
ありがとう、これは間違いなくチュートリアルで言及されるべきです!
Mircea Sandu 2016

2

wp_usersとwp_metaを共有するときに別の問題が発生します。他のワードプレスのインストールではユーザーは認識されますが、他のWebサイトからのユーザーの役割は認識されません。ロールは未定義として表示されます。

したがって、必要に応じてwp-config.phpを編集しました。

define('CUSTOM_USER_TABLE', 'someprefix_users');
define('CUSTOM_USER_META_TABLE', 'someprefix_usermeta');

私はこれを行う最も簡単な方法は、dbをいじる必要なしにwp internalsを使用することだと思います。ログイン時に、役割を割り当てることができます。たとえば、全員の投稿者の役割と、ユーザー「superman」の管理者の役割が必要だとします。

function check_user_role($user_login, $user) {
  if ( $user_login == 'superman' ) {
     $user->add_role('administrator');
     } else {
     $user->add_role('contributor');
  }
}

// the action fired on login
add_action('wp_login', 'check_user_role', 10, 2);

したがって、最初のWebサイトからアクセスしたユーザーには、ログイン時に「寄稿者」の役割が割り当てられます。

  • adminユーザーでログインした後、ユーザーチェックを削除できます。
  • ユーザーには複数の役割があり、機能が重要です。

http://codex.wordpress.org/Class_Reference/WP_User


0

新しい行を作成する必要がありました。

meta_key='tbs_capabilities' meta_value='a:1:{s:13:"administrator";b:1;}'

user_id=1。あなたが説明した方法はうまくいきませんでした。


1
上記の回答で「tbs」は、私がインストールした2番目のWordPress Webサイトの接頭辞です。したがって、テーブルがwp_postsではなく、tbs_postsになります。$ table_prefix = 'tbs_'を明示的に設定しない限り、動作しません。
Ian
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.