Skip to main content

GraphQL Syntax

Builderius uses a custom GraphQL implementation optimized specifically for WordPress Pro Feature data structures and page builder workflows. Unlike standard GraphQL, this syntax is designed to work seamlessly with WordPress's post types, custom fields, taxonomies, and user roles while being accessible to visual builders rather than requiring deep GraphQL knowledge.

Understanding these syntax rules is essential for writing valid queries that leverage WordPress data efficiently.

Root Object Requirement

All queries must be wrapped in a root object:

{
# ... all code here
}

Basic Syntax Rules

Every query follows this structure:

{
query_name {
field_name
}
}

Arguments Syntax

Arguments use parentheses and key-value pairs:

{
query_function(argument: "value") {
field
}
}

Data Types

Use double quotes for string values:

{
posts_query(
arguments: {
post_type: "post"
post_status: "publish"
}
) {
posts {
post_title
}
}
}

Special Utilities

Use variables to reference dynamic data from the current template context. This creates relationships between different parts of your query.

  • Local context: "{{variable_name}}" - data from current item
  • Global context: "[[variable_name]]" - site-wide data
{
post {
ID @private
related_posts: posts_query(
arguments: {
post__not_in: "{{ID}}"
}
) {
posts {
post_title
}
}
}
}

Syntax Conventions

  • Use snake_case: post_title, featured_image
  • No spaces allowed: post title
  • No special characters except underscore

Expression Syntax

Expressions are used to perform data transformation, calculations and more.

{
posts_query {
posts {
post_title
uppercase_title: expression_result(
expression: "upper(post_title)"
)
}
}
}

Combining Queries

You can combine multiple queries in sophisticated ways to create custom data relationships and nested structures.

Independent queries in same variable:

{
# Recent blog posts
recent_posts: posts_query(
arguments: {
post_type: "post"
posts_per_page: 5
}
) {
posts {
post_title
post_date
}
}

# Team members
team_members: users_query(
arguments: {
role: "author"
number: 4
}
) {
users {
display_name
avatar_url
}
}

# Site options
site_title: option_value(name: "blogname")
contact_email: option_value(name: "admin_email")
}

Key patterns:

  • Multiple queries: Independent data sources in single variable
  • Nested queries: Queries inside object structures for hierarchical data
  • Relational queries: Using @private fields and data variables to connect queries

These patterns enable sophisticated data relationships while maintaining readable query structure.

Common Syntax Errors

post {
post_title
}

{
post {
post_title
}
}

These syntax rules form the foundation for writing valid Builderius GraphQL queries.

WPGraphQL Syntax Comparison

Builderius uses its own GraphQL syntax - standard WPGraphQL queries won't work. This custom implementation uses familiar WordPress field names (post_title vs title), WordPress query arguments (meta_query, tax_query), and direct array access instead of edges/nodes pagination, making it more intuitive for WordPress developers.

{
posts_query(
arguments: {
post_type: "post"
posts_per_page: 5
}
) {
posts {
ID
post_title
featured_image {
thumbnail: file_url(size: THUMBNAIL)
medium: file_url(size: MEDIUM)
large: file_url(size: LARGE)
alt_text
}
}
}
}

Built-in WordPress features:

  • WordPress field names (post_title)
  • Arguments object with WordPress query parameters
  • Direct array access without pagination structure
  • Built-in image size constants