質問: 管理者権限と編集者権限のみ任意のプラグイン(woo cartpro)を表示させたいのですが、 functions.phpに以下の記述をしても管理者だけにしか表示されない、 また、別途カートアイコンという名前で新たにサイドメニューに表示されます。 ``` add_action( 'admin_menu', 'register_my_custom_menu_page' ); function register_my_custom_menu_page() { if (current_user_can('administrator','editor')) { //管理者、編集者以外はwoocart項目を非表示 add_menu_page( 'custom menu title', 'カートアイコン', 'manage_options', 'admin.php?page=festi-cart', '', plugins_url( 'plugins/woocommerce-woocartpro/static/images/icon_16x16.png' ), 6 ); }} ``` 以下のプラグインを管理者、編集者だけ表示させたい。(スラッグ名:festi-cart) ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/6dce01dc943a0ef32661b52118d870f1.png) しかし、追加のメニューとして管理画面サイドバー上部にカートアイコンと表示されてしまう。 ![イメージ説明](https://teratail.storage.googleapis.com/uploads/contributed_images/d315d89fb37c3686954e77e287c4c149.png) 「adminimize」「manege menus」のプラグインで編集者権限でログイン時、任意のプラグインの表示を設定しても、 表示されないので、今回直接function.phpに記述しようと試みた、という背景です。 その他権限をごとに設定するプラグインとして、「user role editor」も入れています。 このプラグインに関してはそもそも設定したいプラグインの項目が見当たらなかったので、 特になにも設定していません。 つきましてはどのようにfunctions.phpに記述すれば、編集者権限時に管理画面サイドバーに 任意のプラグインが表示されるのでしょうか? もし、詳しい方がいらっしゃればご教示いただきたく思います。 【追記】 ``` function remove_menus () { if (!current_user_can('administrator') && !current_user_can('editor')) { //管理者ではない かつ 編集者ではない場合 remove_menu_page('festi-cart'); } } add_action('admin_menu', 'remove_menus'); ``` を記述すると、エラーが表示されます。具体的なエラー箇所のコードは下記です。 ``` if (!current_user_can('administrator')){ //管理者以外がログインした場合は以下の表示を非表示 function remove_menus(){ remove_submenu_page('themes.php', 'themes.php'); // テーマ remove_menu_page('edit-comments.php'); // コメント remove_menu_page('tools.php'); //ツール remove_submenu_page('edit.php', 'edit-tags.php?taxonomy=post_tag'); // 投稿 -> タグ remove_submenu_page('themes.php', 'widgets.php'); // 外観 -> ウィジェット remove_submenu_page('themes.php', 'nav-menus.php'); // 外観 -> ウィジェット remove_menu_page( 'options-general.php' ); // 設定 remove_menu_page('index.php'); // ダッシュボード } add_action('admin_menu', 'remove_menus'); } ``` そしてエラー箇所のコードをコメントアウトすると、画面は表示されます。 しかし、任意のプラグイン(スラッグ名:festi-cart)は非表示のままです。 よろしくお願いいたします。
回答: こちらのまとめがわかりやすいと思います。 これを参考にすると、以下のような感じです。 ``` function remove_menus () { if (!current_user_can('administrator') && !current_user_can('editor')) { //管理者ではない かつ 編集者ではない場合 remove_menu_page('festi-cart'); } } add_action('admin_menu', 'remove_menus'); ``` **追記** > > もともとプラグインは管理者権限でしか表示されない > > > ということであれば、 functions.phpには、「編集者権限の時にメニューを追加する」コードを書くだけでいいはずです。 ``` function register_my_custom_menu_page() { if (current_user_can('editor')) { //編集者だったらcart項目を表示 add_menu_page( 'custom menu title', 'カートアイコン', 'manage_options', 'admin.php?page=festi-cart', '', plugins_url( 'plugins/woocommerce-woocartpro/static/images/icon_16x16.png' ), 6 ); } } add_action( 'admin_menu', 'register_my_custom_menu_page' ); ``` 後、コメントに書かれたコードは、add_actionが関数内に記述されているために動作していません。