Guest User

Untitled

a guest
May 20th, 2018
130
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.54 KB | None | 0 0
  1. add_filter( 'graphql_root_queries', function( $fields ) {
  2.  
  3. $fields['userRoles'] = [
  4. 'type' => \WPGraphQL\Types::list_of( new \WPGraphQL\Type\WPObjectType([
  5. 'name' => 'UserRole',
  6. 'fields' => [
  7. 'name' => [
  8. 'type' => \WPGraphQL\Types::string(),
  9. ],
  10. 'capabilities' => [
  11. 'type' => \WPGraphQL\Types::list_of( \WPGraphQL\Types::string() ),
  12. 'resolve' => function( $roles ) {
  13. $capabilities = [];
  14. if ( ! empty( $roles['capabilities'] ) && is_array( $roles['capabilities'] ) ) {
  15. $capabilities = array_keys( $roles['capabilities'] );
  16. }
  17. sort($capabilities );
  18. return $capabilities;
  19. }
  20. ],
  21. ],
  22. ])),
  23. 'resolve' => function( $root, $args, $context, $info ) {
  24. global $wp_roles;
  25. $roles = function_exists( 'get_editable_roles' ) ? get_editable_roles() : apply_filters( 'editable_roles', $wp_roles->roles );
  26.  
  27. return ! empty( $roles ) ? $roles : null;
  28. }
  29. ];
  30.  
  31. return $fields;
  32.  
  33. } );
  34.  
  35. add_action( 'init', function() {
  36.  
  37. $query = '
  38. {
  39. userRoles {
  40. name
  41. capabilities
  42. }
  43. }
  44. ';
  45.  
  46. $roles = do_graphql_request( $query );
  47.  
  48. $all_capabilities = [];
  49.  
  50. if ( ! empty( $roles['data']['userRoles'] ) ) {
  51. foreach ( $roles['data']['userRoles'] as $role ) {
  52. foreach ( $role['capabilities'] as $key => $capability ) {
  53. if ( ! isset( $all_capabilities[ $capability ] ) ) {
  54. $all_capabilities[ $capability ] = [];
  55. }
  56. array_push( $all_capabilities[ $capability ], $role['name'] );
  57. }
  58. }
  59. }
  60.  
  61. foreach ( $all_capabilities as $cap => $roles ) {
  62. print_r( $cap );
  63. print_r( '<br/>' );
  64. }
  65.  
  66. die();
  67.  
  68.  
  69. });
Add Comment
Please, Sign In to add comment