私はこれを一日中試していますが、wp_insert_user()
関数を使って挿入している現在のユーザーにどのようにロールを設定するのかうまくいきません。
$userdata = array(
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
'user_url' => $website,
'first_name' => $first_name,
'last_name' => $last_name,
'nickname' => $nickname,
'description' => $bio,
'role' => 'Editor'
);
$user = wp_insert_user( $userdata );
$WP_array = array (
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
'user_url' => $website,
'first_name' => $first_name,
'last_name' => $last_name,
'nickname' => $nickname,
'description' => $bio,
) ;
$id = wp_insert_user( $WP_array ) ;
wp_update_user( array ('ID' => $id, 'role' => 'editor') ) ;
あなたが実用的な解決策を探しているので、これはうまくいくはずです、そしてそれはただ役に立つ答え候補です。私はこれが最善の解決策ではないかもしれないし、おそらく近いかもしれませんが、うまくいくはずです。
もっと深く掘り下げて、私の最後をチェックした後、私はこのスクリプトがうまく機能することを発見しました。
$userdata = array(
'user_login' => $username,
'user_email' => $email,
'user_pass' => $password,
'user_url' => $website,
'first_name' => $first_name,
'last_name' => $last_name,
'nickname' => $nickname,
'description' => $bio,
'role' => 'editor'
);
$user = wp_insert_user( $userdata );
それでも、このスクリプトには不思議なことは何もありません。役割は小文字を使用する必要があるように見えます、そしてあなたはこの機能のせいにする必要があります。
/wp-includes/class-wp-roles.php
284: /**
285: * Whether role name is currently in the list of available roles.
286: *
287: * @since 2.0.0
288: * @access public
289: *
290: * @param string $role Role name to look up.
291: * @return bool
292: */
293: public function is_role( $role ) {
functions.php
にこのようなコードを書いているなら、あなたはあなた自身をチェックすることができます。
$r = new WP_Roles();
var_dump("editor", $r->is_role("editor"));
var_dump("Editor", $r->is_role("Editor"));
die();
あなたはこのような最終結果を得るでしょう。
string(6) "editor" bool(true) string(6) "Editor" bool(false)
これは、ロール名のeditor
がOKで、Editor
が正しくないことを意味します。
この'role' => ""
のように空の役割を設定すると、まったく役割が設定されないことになることに注意してください(最初に@TheBeastにEditor
名を付けて経験したところで役割は設定されません)。
一方、'role'
キーを省略すると、ユーザーはデフォルトの役割を引き継ぎます。デフォルトの役割は通常editor
ですが、カスタマイズするのはあなた次第です。その情報はget_option('default_role')
を介して取得でき、set_option
関数を介して設定できます。
過去に私は@TheBeastからのコードが実際にうまくいくだろうという指摘を見つけました。 ( https://wordpress.org/support/topic/wp_insert_user-function-user-roles?replies=3 )
私たちにとって実際に重要なのは、役割を追加するプロセスです。次のように書くことができます:
add_action( 'init', 'plugin_add_role');
function plugin_add_role( 'reviewer', 'Reviewer', $caps );
ここであなたの$caps
機能は次のようなものです。
$caps = array(
'read' => true,
'edit_posts' => true,
'edit_others_posts' => true,
'edit_private_posts' => true,
'edit_published_posts' => true,
'read_private_posts' => true,
'edit_pages' => true,
'edit_others_pages' => true,
'edit_private_pages' => true,
'edit_published_pages' => true,
'read_private_pages' => true,
);
機能についての詳細はcodex https://codex.wordpress.org/Roles_and_Capabilities で読むことができます。