• ecclescake

    (@ecclescake)


    Howdy,

    I would like to request that a filter be added for the capability needed to access the settings pages. This would allow site builders to grant Editors, for example, the ability to manage the calendars. For further granularity, my code could be modified so that a different filter is used for each page, so that Editors could access the plugin dashboard but not the Add Calendar page, for example.

    Suggested Change in Admin/Classes/VRCalendarAdmin.class.php around line 285:

    From:

    function registerAdminPages() {
            add_menu_page( VRCALENDAR_PLUGIN_NAME, VRCALENDAR_PLUGIN_NAME, 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-dashboard', array($this,'dashboard') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Dashboard', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Dashboard', VRCALENDAR_PLUGIN_TEXT_DOMAIN), 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-dashboard', array($this,'dashboard') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Add Calendar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Add Calendar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-add-calendar', array($this,'addCalendar') ); 
    	add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Add Search Bar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Add Search Bar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-add-search-bar', array($this,'addSearchbar') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Settings', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Settings', VRCALENDAR_PLUGIN_TEXT_DOMAIN), 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-settings', array($this,'settings') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Information', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Information', VRCALENDAR_PLUGIN_TEXT_DOMAIN), 'edit_dashboard', VRCALENDAR_PLUGIN_SLUG.'-information', array($this,'information') );
        }

    to:

    function registerAdminPages() {
            $cap = apply_filters( 'vr_calendar_settings_page_capability_filter', 'edit_dashboard' );
            add_menu_page( VRCALENDAR_PLUGIN_NAME, VRCALENDAR_PLUGIN_NAME, $cap, VRCALENDAR_PLUGIN_SLUG.'-dashboard', array($this,'dashboard') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Dashboard', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Dashboard', VRCALENDAR_PLUGIN_TEXT_DOMAIN), $cap, VRCALENDAR_PLUGIN_SLUG.'-dashboard', array($this,'dashboard') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Add Calendar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Add Calendar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), $cap, VRCALENDAR_PLUGIN_SLUG.'-add-calendar', array($this,'addCalendar') ); 
    	add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Add Search Bar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Add Search Bar', VRCALENDAR_PLUGIN_TEXT_DOMAIN), $cap, VRCALENDAR_PLUGIN_SLUG.'-add-search-bar', array($this,'addSearchbar') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Settings', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Settings', VRCALENDAR_PLUGIN_TEXT_DOMAIN), $cap, VRCALENDAR_PLUGIN_SLUG.'-settings', array($this,'settings') );
            add_submenu_page( VRCALENDAR_PLUGIN_SLUG.'-dashboard', __('Information', VRCALENDAR_PLUGIN_TEXT_DOMAIN), __('Information', VRCALENDAR_PLUGIN_TEXT_DOMAIN), $cap, VRCALENDAR_PLUGIN_SLUG.'-information', array($this,'information') );
        }
  • The topic ‘Request: add filter to allow different user roles to access settings pages’ is closed to new replies.