register_graphql_field
Add a field to a Type in the GraphQL Schema
register_graphql_field( string $type_name, string $field_name, array $config );Parameters
- $type_name (string): The name of the GraphQL Type in the Schema to register the field to
- $field_name (string): The name of the field. Should be unique to the Type the field is being registered to.
- $config (array): Configuration for the field- $type (string | array): The name of the GraphQL Type the field will return. The resolve function must return this type. - For non-null fields: 'type' => [ 'non_null' => 'TypeName' ]
- For listOf fields: 'type' => [ 'list_of' => 'TypeName' ]
 
- For non-null fields: 
 - $description (string): Description of the field. This will be used to self-document the schema and should describe to clients how the field should be used.
- $resolve (function): Function that will execute when the field is asked for in a query.
 
- $type (string | array): The name of the GraphQL Type the field will return. The resolve function must return this type. 
Source
File: access-functions.php
Examples
Below are some examples of using the function to extend the GraphQL Schema.
Register a Root Field
This example adds a field to the root of the GraphQL Schema.
add_action( 'graphql_register_types', function() {
  register_graphql_field( 'RootQuery', 'testField', [
    'type' => 'String',
    'description' => __( 'Example field added to the RootQuery Type', 'replace-with-your-textdomain' ),
    'resolve' => function( $root, $args, $context, $info ) {
      return 'Example string.';
    }
  ] );
});Example Query
{
  testField
}
Register a Post Field
This example shows how to register a field to the Post type.
add_action( 'graphql_register_types', function() {
  register_graphql_field( 'Post', 'testPostField', [
    'type' => 'String',
    'description' => __( 'Example field added to the Post Type', 'replace-with-your-textdomain' ),
    'resolve' => function( \WPGraphQL\Model\Post $post, $args, $context, $info ) {
      return 'Example string with the title of the post: ' . $post->titleRendered;
    }
  ] );
});Example Query
{
  posts(first: 1) {
    nodes {
      title
      testPostField
    }
  }
}
Register a field to an Interface
This example shows how to register a field to an Interface. In this example, a field is registered to the “ContentNode” Interface. This means any Type (any WordPress Post Type) in the Schema that implements the “ContentNode” interface will have the field.
add_action( 'graphql_register_types', function() {
  register_graphql_field( 'ContentNode', 'testContentNodeField', [
    'type' => 'String',
    'description' => __( 'Example field added to the ContentNode Interface', 'replace-with-your-textdomain' ),
    'resolve' => function( \WPGraphQL\Model\Post $post_model, $args, $context, $info ) {
      return 'Example string with the title of the post: ' . $post->titleRendered;
    }
  ] );
});Example Query:
{
  contentNodes(first: 2, where: {contentTypes: [PAGE, POST]}) {
    nodes {
      __typename
      id
      testContentNodeField
    }
  }
}