Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- add_filter( 'graphql_root_queries', function( $fields ) {
- $fields['userRoles'] = [
- 'type' => \WPGraphQL\Types::list_of( new \WPGraphQL\Type\WPObjectType([
- 'name' => 'UserRole',
- 'fields' => [
- 'name' => [
- 'type' => \WPGraphQL\Types::string(),
- ],
- 'capabilities' => [
- 'type' => \WPGraphQL\Types::list_of( \WPGraphQL\Types::string() ),
- 'resolve' => function( $roles ) {
- $capabilities = [];
- if ( ! empty( $roles['capabilities'] ) && is_array( $roles['capabilities'] ) ) {
- $capabilities = array_keys( $roles['capabilities'] );
- }
- sort($capabilities );
- return $capabilities;
- }
- ],
- ],
- ])),
- 'resolve' => function( $root, $args, $context, $info ) {
- global $wp_roles;
- $roles = function_exists( 'get_editable_roles' ) ? get_editable_roles() : apply_filters( 'editable_roles', $wp_roles->roles );
- return ! empty( $roles ) ? $roles : null;
- }
- ];
- return $fields;
- } );
- add_action( 'init', function() {
- $query = '
- {
- userRoles {
- name
- capabilities
- }
- }
- ';
- $roles = do_graphql_request( $query );
- $all_capabilities = [];
- if ( ! empty( $roles['data']['userRoles'] ) ) {
- foreach ( $roles['data']['userRoles'] as $role ) {
- foreach ( $role['capabilities'] as $key => $capability ) {
- if ( ! isset( $all_capabilities[ $capability ] ) ) {
- $all_capabilities[ $capability ] = [];
- }
- array_push( $all_capabilities[ $capability ], $role['name'] );
- }
- }
- }
- foreach ( $all_capabilities as $cap => $roles ) {
- print_r( $cap );
- print_r( '<br/>' );
- }
- die();
- });
Add Comment
Please, Sign In to add comment