サポート » マルチサイト » 複数サイトでユーザーを共有する際に権限グループが「なし」になります

  • 解決済 plum0710

    (@plum0710)


    現在「Theme My Login」(Ver 6.3.9)を使用して会員制のサイトを構築中です。

    その際にサイトAで登録してもらったユーザーをサイトBのユーザーと共有したいと思い、以下の記事を参考にusersテーブルとusermetaテーブルを共有しました。
    http://www.homepage.ok-jp.com/blog/20110729259

    しかし、サイトAで権限グループ「購読者」として登録されているメンバーがサイトBでは権限グループ「なし」となってしまいます。

    下記記事によると『スレーブ(奴隷)であるサイトBにおいて、ユーザーが「権限なし」となってしまう』とあります。
    http://takahashifumiki.com/web/programing/1266/

    このサイトAで登録されたユーザーの権限グループをサイトBでリアルタイムで自動的に反映させるにはどうすればよろしいのか教えていただけると幸いです。

    よろしくお願いいたします。

5件の返信を表示中 - 16 - 20件目 (全20件中)
  • 作成ありがとうございます。

    結果は以下のようになりました。

    Static String
    bool(true)
    bool(true)
    array(1) {
      ["contributor"]=>
      bool(true)
    }
    array(1) {
      ["contributor"]=>
      bool(true)
    }
    Meta by current uid
    (Data)
    array(1) {
      [0]=>
      array(1) {
        ["administrator"]=>
        bool(true)
      }
    }

    一応解決しました。

    一時的な回避策かもしれませんが、コードを以下のように変更しました。

    function synchro_roles_add ( $user_id ) {
    	$role =  get_user_meta( $user_id, 'wp_capabilities' );
    	$role = $role[0];
    	add_user_meta( $user_id, 'wp2_capabilities', $role );
    }
    add_action( 'user_register', 'synchro_roles_add' );
    
    function synchro_roles_update ( $user_id ) {
    	$role =  get_user_meta( $user_id, 'wp_capabilities' );
    	$role = $role[0];
    	update_user_meta( $user_id, 'wp2_capabilities', $role );
    }
    add_action( 'profile_update', 'synchro_roles_update' );

    アクションフックのinitとdie()を組み合わせてデバッグ作業できることを教示していただいたため、色々と試してみたら、どうもgetする際にもとの状態に戻らないということが判明しました。

    これでいいのか分かりませんが、解決にご協力いただき、ありがとうございました。

    モデレーター Daisuke Takahashi

    (@extendwings)

    function synchro_roles ( $user_id ) {
    	$role =  get_user_meta( $user_id, 'wp_capabilities' );
    	update_user_meta( $user_id, 'wp2_capabilities', $role[0] );
    }
    add_action( 'user_register', 'synchro_roles' );
    add_action( 'profile_update', 'synchro_roles' );

    良かったです。update_user_metaは更新だけでなく新規追加もできるのでこんな感じまで削減できるかと思います

    Multisite User Managementというプラグインがあるのでこれを参考にするのも良いかもしれません。全てのブログに予め設定した権限を自動付与するプラグインです。

    http://wordpress.org/plugins/multisite-user-management/

    >Daisuke Takahashi様
    コードの改良、ありがとうございます。
    ご協力いただき、本当に助かりました。

    >wpmubp
    ありがとうございます。
    参考にさせていただきます。

    こちらのフォーラムは解決とさせていただきます。
    本当にありがとうございました。

5件の返信を表示中 - 16 - 20件目 (全20件中)
  • トピック「複数サイトでユーザーを共有する際に権限グループが「なし」になります」には新たに返信することはできません。