has_cap 云々の古いプラグインではよくエラーがでている権限の話。
警告されるのもうざい。
しょうがないから各関数で $capability として与える権限名がわからないので調べてみた。
そもそも数値で与えると一応処理は通してはくれるけど、Notice が出て、「もう使わないようにしてね」って言われていた。*1
追記*2
権限は細かく区切られていて、どれを選ぶのかよくわからないよね。
参考:
> http://codex.wordpress.org/Roles_and_Capabilities
各権限に相当するlevelは下記の通り。
Administrator / Level_10 Editor / Level 7 Author / Level_2 Contributor / Level_1 Subscriber / Level_0
3〜6の間がごっそり抜けている。なんでだろう。
「level_」記述 は多分旧バージョンの名残なのだろうと想像。
いつまで使えるのかなあ。
実際には wp_option の中に wp_user_roles という名前のオプションがあり、
その中に権限情報が集約されている。
本当は wp_user_roles というテーブルを作りたかったように見える。
(wp-includes/capabilities.php参照)
とりあえず初期状態のデータの中をメモっておくことにする。
Wordpress3.4.1にて。
a:5:{ s:13:"administrator"; a:2:{ s:4:"name"; s:13:"Administrator"; s:12:"capabilities"; a:62:{ s:13:"switch_themes"; b:1; s:11:"edit_themes"; b:1; s:16:"activate_plugins"; b:1; s:12:"edit_plugins"; b:1; s:10:"edit_users"; b:1; s:10:"edit_files"; b:1; s:14:"manage_options"; b:1; s:17:"moderate_comments"; b:1; s:17:"manage_categories"; b:1; s:12:"manage_links"; b:1; s:12:"upload_files"; b:1; s:6:"import"; b:1; s:15:"unfiltered_html"; b:1; s:10:"edit_posts"; b:1; s:17:"edit_others_posts"; b:1; s:20:"edit_published_posts"; b:1; s:13:"publish_posts"; b:1; s:10:"edit_pages"; b:1; s:4:"read"; b:1; s:8:"level_10"; b:1; s:7:"level_9"; b:1; s:7:"level_8"; b:1; s:7:"level_7"; b:1; s:7:"level_6"; b:1; s:7:"level_5"; b:1; s:7:"level_4"; b:1; s:7:"level_3"; b:1; s:7:"level_2"; b:1; s:7:"level_1"; b:1; s:7:"level_0"; b:1; s:17:"edit_others_pages"; b:1; s:20:"edit_published_pages"; b:1; s:13:"publish_pages"; b:1; s:12:"delete_pages"; b:1; s:19:"delete_others_pages"; b:1; s:22:"delete_published_pages"; b:1; s:12:"delete_posts"; b:1; s:19:"delete_others_posts"; b:1; s:22:"delete_published_posts"; b:1; s:20:"delete_private_posts"; b:1; s:18:"edit_private_posts"; b:1; s:18:"read_private_posts"; b:1; s:20:"delete_private_pages"; b:1; s:18:"edit_private_pages"; b:1; s:18:"read_private_pages"; b:1; s:12:"delete_users"; b:1; s:12:"create_users"; b:1; s:17:"unfiltered_upload"; b:1; s:14:"edit_dashboard"; b:1; s:14:"update_plugins"; b:1; s:14:"delete_plugins"; b:1; s:15:"install_plugins"; b:1; s:13:"update_themes"; b:1; s:14:"install_themes"; b:1; s:11:"update_core"; b:1; s:10:"list_users"; b:1; s:12:"remove_users"; b:1; s:9:"add_users"; b:1; s:13:"promote_users"; b:1; s:18:"edit_theme_options"; b:1; s:13:"delete_themes"; b:1; s:6:"export"; b:1; } } s:6:"editor"; a:2:{ s:4:"name"; s:6:"Editor"; s:12:"capabilities"; a:34:{ s:17:"moderate_comments"; b:1; s:17:"manage_categories"; b:1; s:12:"manage_links"; b:1; s:12:"upload_files"; b:1; s:15:"unfiltered_html"; b:1; s:10:"edit_posts"; b:1; s:17:"edit_others_posts"; b:1; s:20:"edit_published_posts"; b:1; s:13:"publish_posts"; b:1; s:10:"edit_pages"; b:1; s:4:"read"; b:1; s:7:"level_7"; b:1; s:7:"level_6"; b:1; s:7:"level_5"; b:1; s:7:"level_4"; b:1; s:7:"level_3"; b:1; s:7:"level_2"; b:1; s:7:"level_1"; b:1; s:7:"level_0"; b:1; s:17:"edit_others_pages"; b:1; s:20:"edit_published_pages"; b:1; s:13:"publish_pages"; b:1; s:12:"delete_pages"; b:1; s:19:"delete_others_pages"; b:1; s:22:"delete_published_pages"; b:1; s:12:"delete_posts"; b:1; s:19:"delete_others_posts"; b:1; s:22:"delete_published_posts"; b:1; s:20:"delete_private_posts"; b:1; s:18:"edit_private_posts"; b:1; s:18:"read_private_posts"; b:1; s:20:"delete_private_pages"; b:1; s:18:"edit_private_pages"; b:1; s:18:"read_private_pages"; b:1; } } s:6:"author"; a:2:{ s:4:"name"; s:6:"Author"; s:12:"capabilities"; a:10:{ s:12:"upload_files"; b:1; s:10:"edit_posts"; b:1; s:20:"edit_published_posts"; b:1; s:13:"publish_posts"; b:1; s:4:"read"; b:1; s:7:"level_2"; b:1; s:7:"level_1"; b:1; s:7:"level_0"; b:1; s:12:"delete_posts"; b:1; s:22:"delete_published_posts"; b:1; } } s:11:"contributor"; a:2:{ s:4:"name"; s:11:"Contributor"; s:12:"capabilities"; a:5:{ s:10:"edit_posts"; b:1; s:4:"read"; b:1; s:7:"level_1"; b:1; s:7:"level_0"; b:1; s:12:"delete_posts"; b:1; } } s:10:"subscriber"; a:2:{ s:4:"name"; s:10:"Subscriber"; s:12:"capabilities"; a:2:{ s:4:"read"; b:1; s:7:"level_0"; b:1; } } }