这很重要,因为我需要客户完全不使用商店的自定义帖子类型,并且如果他们可以在仪表板上看到商店CPT UI,那么他们的功能也不会有所不同受到限制,因为他们仍然要询问如何才能自己添加产品。
Id确实更喜欢不使用插件来完成此操作,但是如果有可以解决问题的方法我认为,以一种非blo肿的方式仍然会很棒。
感谢您的帮助,
SB
#1 楼
要向非管理员用户隐藏帖子类型菜单项: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
应该是您实际帖子类型的名称。EDIT -
可以删除的其他菜单页面:
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
EDIT 2-
删除插件菜单项。
对于插件,似乎只需要
page=
查询变量。要注意的另一件事是优先级,它是admin_menu
add_action
的第三个参数。它必须设置得足够低(数字越大,优先级越低),以便插件已经将自己添加到菜单中。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 );
#2 楼
接受的答案可用于隐藏自定义帖子类型(和其他分类项目),如所述。但是,如果您想隐藏CPT UI插件菜单本身,则也可以删除将其添加到菜单中的操作。if( !current_user_can( 'administrator' ) ) {
remove_action( 'admin_menu', 'cptui_plugin_menu' );
}
#3 楼
您也可以使用Adminimize插件。该插件具有用于所有帖子类型,元框的选项,以及更多隐藏在不同角色上的选项。没有编码。#4 楼
如果要隐藏名称为“ Custom Post Type UI”(也称为CPTUI)的插件菜单,则无法将第一个链接与remove_menu_page组合在一起。;您要做的就是;
function wpse_28782_remove_menus() {
remove_menu_page('cptui_main_menu');
}
add_action('admin_init', 'wpse_28782_remove_menus');
#5 楼
要为所有Shop Manager用户角色(Wordpress 5.1.1)在顶级菜单“产品”下隐藏Woocommerce子菜单: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 );
#6 楼
如果remove_menu_page
对您不起作用(对我而言不是),那么除了删除菜单之外,另一种方法是告诉WordPress不要显示帖子类型的菜单:function wpse28782_hide_menu_items() {
if( !current_user_can( 'administrator' ) ) {
$post_type = get_post_type_object( 'your_post_type');
if ($post_type) {
$post_type->show_in_menu = false;
}
}
}
add_action( 'admin_menu', 'wpse28782_hide_menu_items', 99 );
评论
如此简单的解决方案,谢谢您的完美配合!
–布朗先生
2011年9月17日19:28在
奇怪的是,wpse28782_remove_menu_items是您随机选择的函数名称,还是该名称特定于WP?...。此外,我将如何扩展这一想法并针对其他CPT,或者就此而言其他本机WP菜单?再次感谢您的帮助!
–布朗先生
2011-09-17 19:32
@ Mr.Brown-函数名称基于您的问题的ID(请检查url),只是可以保证唯一的名称,只要它不是现有函数,您就可以随意命名。您还可以添加其他remove_menu_page调用以删除其他CPT以及其他菜单项,请参见我的编辑。
–米洛
2011年9月17日在20:05
太棒了,再次感谢。这是一个了不起的解决方案。
–布朗先生
2011年9月17日在20:06
最后一件事-如何从当前安装的插件中查找用于其他菜单的模板名称?即。 remove_menu_page('cart_plugin');
–布朗先生
2011-09-17 20:11