web-dev-qa-db-ja.com

特定のユーザーロールからカスタム投稿タイプのUI /メニューを隠すことは可能ですか?

カスタム投稿タイプのUIを特定のユーザーロールから完全に非表示にすることを考えています...これらのCPTを使用するためのアクセスを無効にする方法に関するリソースは多数ありますが、CPT UIを完全に非表示にすることはできません。どのユーザーがダッシュボードにログインしているかに基づいてすべてまとめて表示されます。

クライアントがストアのカスタム投稿タイプを完全に使用しないようにする必要があるため、これは重要です。ダッシュボードでストアのCPT UIが表示される場合でも、機能が制限されていれば効果は変わりません。その結果、自分で製品を追加する方法について説明します。

Idは、プラグインでこれを実現しないことを本当に望んでいます。

SBさん、どうもありがとう

19
Mr.Brown

管理者以外のユーザーから投稿タイプのメニュー項目を非表示にするには

function wpse28782_remove_menu_items() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page( 'edit.php?post_type=your_post_type' );
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_menu_items' );

your_post_typeはあなたの実際の投稿タイプの名前です。

編集 -

あなたが削除できる他のメニューページ:

remove_menu_page('edit.php'); // Posts
remove_menu_page('upload.php'); // Media
remove_menu_page('link-manager.php'); // Links
remove_menu_page('edit-comments.php'); // Comments
remove_menu_page('edit.php?post_type=page'); // Pages
remove_menu_page('plugins.php'); // Plugins
remove_menu_page('themes.php'); // Appearance
remove_menu_page('users.php'); // Users
remove_menu_page('tools.php'); // Tools
remove_menu_page('options-general.php'); // Settings

編集2 -

プラグインメニュー項目の削除.

プラグインの場合、必要なのはpage=クエリ変数だけです。もう1つ注意すべきことは優先順位です。これはadmin_menuadd_actionの3番目の引数です。プラグインがすでにメニューに追加されているように、十分に低く設定する必要があります(数字が大きいほど、優先順位は低くなります)。

function wpse28782_remove_plugin_admin_menu() {
    if( !current_user_can( 'administrator' ) ):
        remove_menu_page('cart66_admin');
    endif;
}
add_action( 'admin_menu', 'wpse28782_remove_plugin_admin_menu', 9999 );
36
Milo

説明されているように、受け入れられた回答を使用してカスタム投稿タイプ(およびその他の各種アイテム)を非表示にすることができます。しかし、 CPT UI pluginメニュー自体を非表示にしたい場合は、最初にそれをメニューに追加するアクションを削除することもできます。

if( !current_user_can( 'administrator' ) ) {
    remove_action( 'admin_menu', 'cptui_plugin_menu' );
}
1
Grant

Adminimize プラグインを使用することもできます。このプラグインには、さまざまな役割を隠すためのすべての投稿タイプ、メタボックス、その他多数のオプションがあります。コーディングなし.

1
bueltge

すべてのShop Managerユーザロールの最上位メニュー[Products]の下にある[Woocommerce]サブメニューを非表示にするには(Wordpress 5.1.1)

function remove_menus_shopmgr(){

// If the current user is a shop manager
if ( current_user_can('shop_manager') ) {

   //removes Products > Categories submenu 
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_cat&post_type=product' );

   //removes Products > Tags submenu
    remove_submenu_page( 'edit.php?post_type=product','edit-tags.php?taxonomy=product_tag&post_type=product' ); 

    }
}

add_action( 'admin_menu', 'remove_menus_shopmgr', 999 );

あなたが "Custom Post Type UI" a.k.a CPTUIという名前のプラグインのメニューを隠したいのであれば、最初のリンクをremove_menu_pageと組み合わせることはできません。

あなたがしなければならないのはただです。

function wpse_28782_remove_menus() {
    remove_menu_page('cptui_main_menu');
}
add_action('admin_init', 'wpse_28782_remove_menus');
0
merkjs