WordPressでスライドショープラグインに画像を登録したいけど、
管理画面にはどこにも「プラグイン」とか「設定」なんてメニューは無いし、
管理者権限をもらっておらず分かる人も居なくて登録できない(途方に暮れる)とき。
やったこと
1. 現在の権限を確認
WordPress管理画面の「ユーザー>ユーザー一覧」からログインしている「ユーザー権限グループ」を確認したが、「ショップ運営者」?
なにそれ?WordPressの標準じゃない。
※標準のユーザーについて: https://ja.wordpress.org/support/article/roles-and-capabilities
2. 現在の権限のスラッグ(英語のキーワード)を確認
WordPressの標準でないためスラッグが何なのか検討がつかないので、
一旦、single.phpかどこかに今のユーザーが何なのか吐き出す。
吐き出されたものでrole
の単語を検索してみると「shop_manager」と分かった。
分かったらすぐに消してもとに戻す。
$user_info = get_user_by('email', 'example@example.com');
var_dump($user_info);
※最初 get_userdata()
で出そうとしたが、下記ページの「Source」を見るとget_user_by()
が関数の中身で使われていて、
https://developer.wordpress.org/reference/functions/get_userdata/
get_user_by()
はユーザーIDでなくても、メールアドレスから辿れることが下記の「Parameters」によく読むと書いてあったのでこれを使った。
https://developer.wordpress.org/reference/functions/get_user_by/
3. functions.phpで判明したスラッグに対して権限を付与
下記をfunctions.phpの一番最後に記載。
そしたら、左メニューに「プラグイン」と「設定」が表示された
一番最後の1
は優先度(プラグインが優先度決めているとこちらが書いたものが動かないため)。下記の「Parameters」参照
https://developer.wordpress.org/reference/functions/add_action/#parameters
add_action('admin_init', function() {
$role = get_role( 'shop_manager' );
// 「プラグイン」メニューの権限
$role->add_cap( 'install_plugins' );
$role->add_cap( 'activate_plugins' );
$role->add_cap( 'update_plugins' );
$role->add_cap( 'delete_plugins' );
$role->add_cap( 'edit_plugins' );
$role->add_cap( 'resume_plugins' );
// 「設定」メニューの権限
$role->add_cap( 'manage_options' );
}, 1);
なお下記によると、1度上記を反映して、ソースコードを消しただけでは元に戻らない(権限が削除されない)らしいので要注意とのこと。
参考: https://satoshimurata.com/wordpress-roles-and-capabilities