虽然我无法证明为什么 read 不起作用 - 通常如果您想通过用户角色来限制某些内容,您可以为角色添加 slug。如果您阅读了add_menu_page() 的源代码,它实际上将通过current_user_can 运行该功能,它也接受角色slug。
我会将read 替换为editor,看看会怎样。它也适用于管理员,因为它会沿列表向下传播,administrators 都具有editor、contributor 等“功能”。
编辑:您似乎安装了Instagram Feed 插件,这将与您的自定义插件冲突。该插件的代码显示sb-instagram-feed 页面属于该插件:
function sb_instagram_menu() {
add_menu_page(
__( 'Instagram Feed', 'instagram-feed' ),
__( 'Instagram Feed', 'instagram-feed' ),
'manage_options',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
add_submenu_page(
'sb-instagram-feed',
__( 'Settings', 'instagram-feed' ),
__( 'Settings', 'instagram-feed' ),
'manage_options',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
}
add_action('admin_menu', 'sb_instagram_menu');
并且该插件需要manage_options,这是一个administrator 唯一的功能。您不需要链接到其他插件创建的页面,也不需要停用该插件。
编辑 2:请注意,直接编辑插件文件通常不是一个好习惯,因为您所做的任何更改都会在插件更新时被覆盖。您可能能够为其取消当前管理菜单的挂钩并挂钩您的自定义菜单。
// Remove Existing Menu
remove_action( 'admin_menu', 'sb_instagram_menu' );
// Add Custom Menu
add_action( 'admin_menu', 'custom_sb_instagram_menu');
function custom_sb_instagram_menu() {
add_menu_page(
'Instagram Test',
'Instagram Test',
'editor',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
add_submenu_page(
'sb-instagram-feed',
'Test Settings',
'Test Settings',
'editor',
'sb-instagram-feed',
'sb_instagram_settings_page'
);
}