/** * Give administrators full access to all plugin pages */ public function allow_admins() { $caps = parent::get_caps(); // give permission to administrator to change slider settings if (current_user_can('manage_options')) { global $wp_roles; foreach ($caps as $cap) { if (!current_user_can($cap)) { $wp_roles->add_cap('administrator', $cap); } } } }
/** * Save capabilities */ private function save_caps() { if (isset($_POST['fa_nonce'])) { if (check_admin_referer('fapro_save_settings', 'fa_nonce')) { if (!current_user_can('manage_options')) { wp_die(__('Sorry, you are not allowed to do this.', 'fapro'), __('Access denied', 'fapro')); } // get roles global $wp_roles; $roles = $wp_roles->get_names(); // get plugin capabilities $capabilities = parent::get_caps(); // remove administrator and subscriber roles unset($roles['administrator']); // remove capabilities foreach ($roles as $role => $name) { $r = get_role($role); foreach ($capabilities as $cap) { $r->remove_cap($cap); } } unset($roles['subscriber']); if (isset($_POST['caps'])) { // allow capabilities for given roles foreach ($roles as $role => $name) { $r = get_role($role); if (isset($_POST['caps'][$role])) { foreach ($capabilities as $cap) { if (isset($_POST['caps'][$role][$cap])) { $r->add_cap($cap); } else { $r->remove_cap($cap); } } } else { foreach ($capabilities as $cap) { $r->remove_cap($cap); } } } } // end if } // end if check admin referer } // end if }