web-dev-qa-db-ja.com

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

まず第一に、Multisiteは私が探しているものではありません。私はユーザーアカウントを有効にしたいのですが、別々のドメインでWordpressを使っている5つのウェブサイトをすべて持っています。ネットワーク全体でユーザーデータを共有する必要があります。ユーザーがアカウントを作成すると、他のすべてのWebサイトにも瞬時にアクセスできるようになります。 Multisiteを使用しているときに私がやろうとしていることは、Wordpressによって推奨されていません。

強く相互接続されたサイト、データを共有するサイト、またはユーザーを共有するサイトの作成を計画している場合は、マルチサイトネットワークは最適なソリューションではないかもしれません。 - http://codex.wordpress.org/Before_You_Create_A_Network (第1段落、第3文)

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

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

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

つまり、管理者側の2番目のサイトにログインできないため、このトリックがこれ以上機能するとは思われません。

このデータをリンクするための最善の方法は何かという提案はありますか?

9
Ian

私の弁護の中でこれについて話している記事の大部分は、この作品を作る上で非常に重要な詳細について言及していませんが、わかりました。その答えは、データベース内の少なくとも1人の管理者に権限を設定する必要があるということです。この情報はCodexのここにあります: 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人のユーザーadminがログインするようにします。ログインしたら、バックエンドから他のすべてのusers/adminロールを調整できます。

Screenshot of what users permissions will be changed

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

私の場合は、現時点で2つのサイトで作業しているだけなので、このようになります。

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

Screenshot of wp_usermeta value

1行目はデフォルトのテーブルプレフィックス(この場合はwp_)のアクセス許可を設定し、2行目は2番目のWebサイトのアクセス許可(この場合はtbs_プレフィックス)を設定します。

最後に私の問題を解決するためにもう少し掘るように私を指摘してくれたコメントについてbrasofiloに感謝します!

この答えが、私と同じ問題を抱えている他の人に役立つことを願っています。

8
Ian

Wp_usersとwp_metaを共有するとき、別の問題があります、他のwordpressインストールはユーザを認識しますがそれは他のウェブサイトから来るユーザの役割を認識しません。役割は未定義として表示されます。

それで、あなたはあなたのwp-config.phpを必要に応じて編集しました:

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

私は、dbに手を加えることなくこれを行う最も簡単な方法は、wp内部を使用することであると思います。ログイン時に、役割を割り当てることが可能です。たとえば、すべての人に貢献者の役割が必要で、ユーザー「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

2
cenk

新しい行を作成しなければなりませんでした。

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

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

0
James Smith