私は説明されているようにSSO設定を持つ2つのWordPressサイトを持っています ここ しかし答えのプラグインは私のために働かなかったので私はセカンドサイトユーザーの機能を追加するコードを書きました:
$ wp_user_query = new WP_User_Query(array( 'role' => 'author')); $ users = $ wp_user_query-> get_results(); if(!empty( $ users)){ foreach($ usersを$ userとして) { add_user_meta($ user-> id、 'orewpst_capabilities'、 "a:1:{s:6 : '作者'; b:1;} "、true); add_user_meta($ user-> id、 'orewpst_user_level'、 '2'、true); } }
問題は"a:1:{s:6:'author';b:1;}"
の出力結果がs:23:"a:1:{s:6:'author';b:1;}"
であることです
"s:23"が何を意味するのか、そしてなぜデータベースに表示されるのかわかりません。
update :文字列"a:1:{s:6:'author';b:1;}"
を変更せずにデータベースに保存します。しかし、どういうわけか私のコードはそれの前に "s:23:"を追加します。
とにかくWordPressがあなたのためにそれをするので手動でそれを直列化せずに値を渡してみてください:
add_user_meta( $user->id, 'orewpst_capabilities', array( 'author' => 1 ), true );
または
update_user_meta( $user->id, 'orewpst_capabilities', array( 'author' => 1 ) ); // it will create the meta data for you if it doesn't exist already.
s:23
は23文字の文字列を格納したことを意味します。
それが役に立てば幸い!
そうです、s:23
はシリアル化されたデータです。 WordPressは自動的にシリアル化されたフォーマットでデータを保存します。
また、ユーザー機能を設定するには、ユーザーメタを更新するのではなく、関数add_cap()
を使用します。詳細はWordPressハンドブック ユーザーロールと機能 をチェックしてください。