/** * Registers the default cap groups. * * @since 1.0.0 * @access public * @return void */ function members_register_cap_groups() { // Register the all group. members_register_cap_group('all', array('label' => esc_html__('All', 'members'), 'caps' => members_get_all_group_caps(), 'icon' => 'dashicons-plus', 'merge_added' => false)); // Registers the general group. members_register_cap_group('general', array('label' => esc_html__('General', 'members'), 'caps' => members_get_general_group_caps(), 'icon' => 'dashicons-wordpress')); // Loop through every custom post type. foreach (get_post_types(array(), 'objects') as $type) { // Skip revisions and nave menu items. if (in_array($type->name, array('revision', 'nav_menu_item'))) { continue; } // Get the caps for the post type. $has_caps = members_get_post_type_group_caps($type->name); // Skip if the post type doesn't have caps. if (empty($has_caps)) { continue; } // Set the default post type icon. $icon = $type->hierarchical ? 'dashicons-admin-page' : 'dashicons-admin-post'; // Get the post type icon. if (is_string($type->menu_icon) && preg_match('/dashicons-/i', $type->menu_icon)) { $icon = $type->menu_icon; } else { if ('attachment' === $type->name) { $icon = 'dashicons-admin-media'; } else { if ('download' === $type->name) { $icon = 'dashicons-download'; } else { if ('product' === $type->name) { $icon = 'dashicons-cart'; } } } } // Register the post type cap group. members_register_cap_group("type-{$type->name}", array('label' => $type->labels->name, 'caps' => $has_caps, 'icon' => $icon)); } // Register the taxonomy group. members_register_cap_group('taxonomy', array('label' => esc_html__('Taxonomies', 'members'), 'caps' => members_get_taxonomy_group_caps(), 'icon' => 'dashicons-tag', 'diff_added' => true)); // Register the theme group. members_register_cap_group('theme', array('label' => esc_html__('Appearance', 'members'), 'caps' => members_get_theme_group_caps(), 'icon' => 'dashicons-admin-appearance')); // Register the plugin group. members_register_cap_group('plugin', array('label' => esc_html__('Plugins', 'members'), 'caps' => members_get_plugin_group_caps(), 'icon' => 'dashicons-admin-plugins')); // Register the user group. members_register_cap_group('user', array('label' => esc_html__('Users', 'members'), 'caps' => members_get_user_group_caps(), 'icon' => 'dashicons-admin-users')); // Register the custom group. members_register_cap_group('custom', array('label' => esc_html__('Custom', 'members'), 'caps' => members_get_capabilities(), 'icon' => 'dashicons-admin-generic', 'diff_added' => true)); // Hook for registering cap groups. Plugins should always register on this hook. do_action('members_register_cap_groups'); }
/** * Registers the default cap groups. * * @since 1.0.0 * @access public * @return void */ function members_register_cap_groups() { // Register the all group. members_register_cap_group('all', array('label' => esc_html__('All', 'members'), 'caps' => members_get_all_group_caps(), 'icon' => 'dashicons-plus', 'merge_added' => false)); // Registers the general group. members_register_cap_group('general', array('label' => esc_html__('General', 'members'), 'caps' => members_get_general_group_caps(), 'icon' => 'dashicons-wordpress')); // Loop through every custom post type. foreach (get_post_types(array(), 'objects') as $type) { // Skip revisions and nave menu items. if (in_array($type->name, array('revision', 'nav_menu_item'))) { continue; } // Get the caps for the post type. $has_caps = members_get_post_type_group_caps($type->name); // Skip if the post type doesn't have caps. if (empty($has_caps)) { continue; } // Set the default post type icon. $icon = $type->hierarchical ? 'dashicons-admin-page' : 'dashicons-admin-post'; // Get the post type icon. if (is_string($type->menu_icon) && preg_match('/dashicons-/i', $type->menu_icon)) { $icon = $type->menu_icon; } else { if ('attachment' === $type->name) { $icon = 'dashicons-admin-media'; } else { if ('download' === $type->name) { $icon = 'dashicons-download'; } else { if ('product' === $type->name) { $icon = 'dashicons-cart'; } } } } // Register the post type cap group. members_register_cap_group("type-{$type->name}", array('label' => $type->labels->name, 'caps' => $has_caps, 'icon' => $icon)); } // Register the taxonomy group. members_register_cap_group('taxonomy', array('label' => esc_html__('Taxonomies', 'members'), 'caps' => members_get_taxonomy_group_caps(), 'icon' => 'dashicons-tag', 'diff_added' => true)); // Register the theme group. members_register_cap_group('theme', array('label' => esc_html__('Appearance', 'members'), 'caps' => members_get_theme_group_caps(), 'icon' => 'dashicons-admin-appearance')); // Register the plugin group. members_register_cap_group('plugin', array('label' => esc_html__('Plugins', 'members'), 'caps' => members_get_plugin_group_caps(), 'icon' => 'dashicons-admin-plugins')); // Register the user group. members_register_cap_group('user', array('label' => esc_html__('Users', 'members'), 'caps' => members_get_user_group_caps(), 'icon' => 'dashicons-admin-users')); // Register the custom group. members_register_cap_group('custom', array('label' => esc_html__('Custom', 'members'), 'caps' => members_get_capabilities(), 'icon' => 'dashicons-admin-generic', 'diff_added' => true)); // Hook for registering cap groups. Plugins should always register on this hook. do_action('members_register_cap_groups'); // Check if the `all` group is registered. if (members_cap_group_exists('all')) { // Set up an empty caps array and get the `all` group object. $caps = array(); $_group = members_get_cap_group('all'); // Get the caps from every registered group. foreach (members_get_cap_groups() as $group) { $caps = array_merge($caps, $group->caps); } // Sort the caps alphabetically. asort($caps); // Assign all caps to the `all` group. $_group->caps = array_unique($caps); } // Check if the `custom` group is registered and there's possibly other non-default groups. if (has_action('members_register_cap_groups') && members_cap_group_exists('custom')) { // Get the custom group object. $custom = members_cap_group_factory()->groups['custom']; // Unset the custom group object. unset(members_cap_group_factory()->groups['custom']); // Move the custom group object to the end. members_cap_group_factory()->groups['custom'] = $custom; } }