カスタムポストタイプに新規ロール(権限)を追加
wordpress カスタムポスト カスタムタクソノミー ロール 権限
カスタムポスト、カスタムタクソノミー登録
◆ 条件
カスタムポスト:blog
カスタムタクソノミー:blog_category
register_post_type('blog', array( 'label' => 'ブログ', 'menu_position' => 10, 'capability_type' => 'blog', 'map_meta_cap' => true, 'public' => true, 'has_archive' => true ) ); register_taxonomy( 'blog_category', 'blog', array( 'label' => 'カテゴリー', 'labels' => array( 'all_items' => 'カテゴリー一覧', 'add_new_item' => 'カテゴリーを追加' ), 'hierarchical' => true, //新規追加ロールがカスタムタクソノミーを編集できるようにする。 //「edit_ + カスタムポストスラッグ + s」 'capabilities' => array( 'assign_terms' => 'edit_blogs', ), 'rewrite' => array ( 'slug' => '/blog/category', 'with_front' => false ), ) );
ロール(権限)追加
◆ 条件
追加ロール:blog_member
function add_custom_role() { $role_caps = array (); //カスタムポストの権限取得 $cap_object = get_post_type_object('blog')->cap; $caps = get_object_vars($cap_object); //カスタムポストの権限追加 foreach( $caps as $key => $value ) { $role_caps[$value] = true; } //メディア操作権限追加 $role_caps['upload_files'] = ture; //タクソノミー(カテゴリー)操作権限追加 $role_caps['manage_categories'] = ture; //ロールクリア remove_role('blog_member'); //ロール追加 add_role( 'blog_member', 'ブログメンバー', $role_caps ); } add_action('admin_init', 'add_custom_role');
管理者にもロールの権限を追加
function add_administrator_caps(){ //管理者ロール取得 $role = get_role( 'administrator' ); //カスタムポストの権限取得 $cap_objects = array (); $cap_objects[] = get_post_type_object('blog')->cap; $post_type_caps = array (); foreach( $cap_objects as $cap_object ) { $caps = get_object_vars($cap_object); foreach( $caps as $key => $value ) { $post_type_caps[] = $value; } } //管理者にカスタムポストの権限追加 foreach($post_type_caps as $cap) { $role->add_cap( $cap ); } } add_action( 'admin_init', 'add_administrator_caps' );