web-dev-qa-db-ja.com

add_user_metaなどを使ってカスタムユーザー機能を追加する方法

私は説明されているように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文字の文字列を格納したことを意味します。

それが役に立てば幸い!

1
Felipe Elia

そうです、s:23はシリアル化されたデータです。 WordPressは自動的にシリアル化されたフォーマットでデータを保存します。

また、ユーザー機能を設定するには、ユーザーメタを更新するのではなく、関数add_cap()を使用します。詳細はWordPressハンドブック ユーザーロールと機能 をチェックしてください。

0
maheshwaghmare