メニュー

東京・小金井市のWEB制作会社の豆知識

MEMORANDUM

WordPress(ワードプレス)|プラグインを使わずにユーザーロール(権限グループ)を追加

ワードプレスを複数人で管理する際にユーザーロール(権限グループ)を割り当てて使用することが多いのですが、社内の仕組みに合わない場合も多々あります。
そこで今回は独自のユーザーロール(権限グループ)を、プラグインを使わずに追加する方法をメモ

functions.php

function my_add_custom_role_once() {
	
	//新規ロールの追加
	if(!get_role('super_editor')){
		
		add_role(
			'super_editor',
			'スーパーエディター',
			array(
				'read' => true, //管理画面にアクセス可能
				'edit_posts' => true, //投稿の編集を許可
				'publish_posts' => true, //投稿の公開を許可
				'delete_posts' => true, //投稿の削除を許可
				'manage_options' => true, //設定メニューの管理権限を許可
			)
		);

	}
	
	//既存ロール削除
	if(get_role('super_editor')){
		remove_role('super_editor');
	}
	
	//既存ロールへ権限追加
	$role = get_role('super_editor');
	if($role){
		$role->add_cap('edit_others_posts');
		$role->add_cap('edit_published_posts');
		$role->add_cap('delete_posts');
		$role->add_cap('delete_others_posts');
		$role->add_cap('delete_published_posts');
		
	}

	//既存ロールの権限削除
	$role = get_role('super_editor');
	if($role){
		$role->remove_cap('edit_published_posts');
	}

}
add_action('init', 'my_add_custom_role_once');

登録した情報はデータベースに保存されるため「add_role()」は複数回実行されないように「get_role()」で存在確認を行うか、簡易プラグインを作成し「register_activation_hook()」内に記述するのが推奨されています。

また、既存のユーザーロールに権限を変更する際は「add_cap」「remove_cap」を使用。
権限は、一度変更すると永続的に作用する(実行後にコメント扱いにしても効果は消えない)ため、既存ロールの権限を変更した際などは特に、何を変更したのかが分かるよう、変更履歴は残しておくことをお勧めします。

自分以外の投稿や、公開済みの投稿なども管理できるようにしたい場合は下記ページ内の「権限一覧」を参考にする

RANKING

人気記事

同一カテゴリーの記事