Thanks. This seems to work. Around line 75:
add_action( 'plugins_loaded', 'set_simple_banner_cap' );
function set_simple_banner_cap(){
$admin = get_role( 'administrator' );
$admin->add_cap( 'manage_simple_banner' );
}
add_action('admin_menu', 'simple_banner_menu');
function simple_banner_menu() {
add_menu_page('Simple Banner Settings', 'Simple Banner', 'manage_simple_banner', 'simple-banner-settings', 'simple_banner_settings_page', 'dashicons-admin-generic');
}
This creates a new capability ‘manage_simple_banner’ and grants that capability to admins, then it checks for that capability (instead of role) to display the edit page.
I can then grant that capability to any user (with a plugin like User Role Editor) and they can access the page. The only issue is that I also need to grant manage_options permissions so the user can save the banner.