プログラムで新しいユーザーのデフォルトの役割を設定するにはどうすればよいですか?


10

ブログの新規ユーザーに、サブスクライバーではなくカスタムの役割を持たせたい。これをプログラムで設定するにはどうすればよいですか?バックエンドから変更できることは知っています。

回答:


13

これにより、プラグインはアクティブなときにデフォルトの役割を簡単に乗っ取ることができます。

// Hijack the option, the role will follow!
add_filter('pre_option_default_role', function($default_role){
    // You can also add conditional tags here and return whatever
    return 'subscriber'; // This is changed
    return $default_role; // This allows default
});

私はそれを使用して、管理者が変更しようとするかどうかに関係なく、サブスクライバーの役割を必要とする一部のプラグインがそれを確実に取得できるようにします:)

よろしく


8

wp_insert_user()関数を介して新しいユーザーが作成されると、ロールはクラスのset_role()メソッドでUser設定され、デフォルトのユーザーロールに設定されます。

デフォルトのユーザーロールはデータベースから取得され、get_option('default_role')管理ダッシュボードで[設定]> [一般]> [新しいユーザーのデフォルトロール]に移動して設定できます。

(を使用して)新しい役割を登録している場合はadd_role()、そこから選択できるようになります。

または、より詳細な制御のために、user_registerまたはprofile_updateアクションにフックして、set_role条件付きでそれらをオンにしたり、その他の方法で好きなようにしたりできます。


1
プラグインをアクティブにすると、実際の答えはupdate_option( 'default_role'、 'custom_role_name')と同じくらい簡単であることがわかりましたが、私はあなたの質問を正しいものとしてマークします。
jayarjo

お役に立てて嬉しいです。
soulseekah

4

を使用してユーザーを作成した後

$user_id = wp_create_user( $user_login, $pas1, $user_email );

ユーザーオブジェクトを作成する

$user = new WP_User($user_id);

次に、役割を設定します

$user->set_role('editor');

「editor」の役割を次のいずれかに置き換えることができます。

  • 管理者

  • 編集者

  • 著者

  • 寄稿者

  • 加入者


1

テーマのPlugingまたはfunctions.phpに配置します

//Make 'Client' a default role

update_option('default_role','client');

2
なぜ??それが何をするか、またはどのように機能するかを知らずにコードをどこかに置くことは目的を果たしません
Pieter Goosen

それは良い解決策ではありません。これにより、各リクエストで特別なアクションが実行されない場合、更新クエリが実行されます。
Maciej Paprocki
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.