MENU

add_role()

add_role() は、WordPress に新しいユーザー権限(ロール)を追加するための関数です。

WordPress にはデフォルトで「管理者」「編集者」「投稿者」などのロールが用意されていますが、add_role() を使うことで、カスタムロールを作成し、特定の権限を割り当てることができます。

これにより、会員制サイトや企業向けのカスタム権限管理を柔軟に設定できます。

目次

機能の説明

add_role() は、新しいユーザーロールを作成し、そのロールに特定の権限を付与します。例えば、独自の権限を持つ「カスタム投稿管理者」や「閲覧専用ユーザー」などを作成する際に利用できます。

主な用途

  • 会員制サイトで独自のユーザーロールを作成する
  • カスタム投稿タイプの管理専用のロールを作成する
  • 一般ユーザーに管理画面の一部の機能のみ許可する

シンプルなコード例

add_role('custom_editor', 'カスタム編集者', array('edit_posts' => true, 'delete_posts' => false));
  • 'custom_editor':新しいロールの識別子(スラッグ)
  • 'カスタム編集者':管理画面に表示されるロール名
  • array('edit_posts' => true, 'delete_posts' => false):ロールに割り当てる権限
    • edit_posts => true:投稿の編集を許可
    • delete_posts => false:投稿の削除を禁止

このコードを実行すると、「カスタム編集者」ロールが追加され、投稿の編集は可能だが削除はできないようになります。

使い方の説明

基本的な使い方

新しいロール「カスタム投稿管理者」を作成し、特定の権限を付与する場合のコードです。

function add_custom_role() {
    add_role('custom_admin', 'カスタム投稿管理者', array(
        'read' => true,
        'edit_posts' => true,
        'publish_posts' => true,
        'delete_posts' => false,
        'manage_options' => false,
    ));
}
add_action('init', 'add_custom_role');
  • add_role('custom_admin', 'カスタム投稿管理者', ...) で新しいロールを作成
  • 'read' => true:管理画面にアクセス可能
  • 'edit_posts' => true:投稿の編集を許可
  • 'publish_posts' => true:投稿の公開を許可
  • 'delete_posts' => false:投稿の削除を禁止
  • 'manage_options' => false:設定メニューの管理権限を禁止

一緒に使うことが多い関連タグ

remove_role()

特定のロールを削除する

remove_role('custom_admin');

custom_admin ロールを削除する。不要になったカスタムロールの削除に使用

add_cap()

既存のロールに新しい権限を追加する

$role = get_role('editor');
$role->add_cap('manage_categories');

編集者(editor)に「カテゴリー管理」の権限を追加する。

remove_cap()

既存のロールから特定の権限を削除する

$role = get_role('editor');
$role->remove_cap('delete_posts');

編集者(editor)から「投稿の削除」権限を削除する。

追加情報で取得したい場合

ロールの一覧を取得

サイトに登録されているすべてのロールを取得するには、以下のコードを使用します。

global $wp_roles;
print_r($wp_roles->roles);

特定のユーザーのロールを取得

ログイン中のユーザーのロールを取得するには、以下のコードを使用します。

$current_user = wp_get_current_user();
$user_roles = $current_user->roles;
print_r($user_roles);

想定されるトラブル

カスタムロールが正しく追加されない

解決方法

  • add_role()init フック内で実行しているか確認する
  • すでに同じスラッグのロールが存在していないか確認する
  • remove_role() を実行して一度ロールを削除してから再作成する

権限が正しく反映されない

解決方法

  • add_cap() で追加の権限を付与してみる
  • ユーザーが新しい権限を持っているか get_role() で確認する
  • キャッシュの影響がある場合があるので、ログアウト・ログインし直す

Q&A

add_role() で管理者(administrator)の権限を変更できますか?

いいえ、管理者の権限を変更するには add_cap()remove_cap() を使用してください。

add_role() を実行した後、ロールを削除するにはどうすればいいですか?

remove_role('role_slug'); を使えば削除できます。

add_role() は functions.php に記述すれば動作しますか?

一度実行するとデータベースに保存されるため、functions.php に入れると何度も実行されることになります。プラグインの register_activation_hook() 内に記述するのが推奨されます。

まとめ

add_role() を使うことで、WordPress に独自のユーザーロールを追加し、特定の権限を持つユーザーグループを作成できます。

これにより、サイトの運用をより細かくコントロールできるようになります。削除する際は remove_role()、権限を変更する際は add_cap()remove_cap() を併用すると便利です。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次