-
Notifications
You must be signed in to change notification settings - Fork 15
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Adds property typing for an object attribute #338
base: main
Are you sure you want to change the base?
Conversation
…ity by eliminating unnecessary if-else structures within the switch statement.
…ibutes of the block with the help of an associative array, where keys are block attributes of type object and values for the keys are associative arrays of property name and type. Provides protected property to store such array along with filter to fill it outside child classes.
…filter or class extension usages.
🦋 Changeset detectedLatest commit: 742f18a The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM.
@whoami-pwd can you add a changeset release as well please? |
Description
Related Issue: #222
This PR introduces refactoring of the
get_attribute_type
method, new functionality for creating typed attribute objects by specifying either in child class or via WP filter.The previous related PR is here. Comparing with the previous one the current approach is not based on the
block.json
but on thetyped_object_attributes
protected property and WP filter.Querying Object-Type Block Attributes in WPGraphQL
Overview
With this update, you can now query object-type block attributes with each property individually, provided that the typed structure is defined in the class
typed_object_attributes
property or through a WordPress filter.How It Works
The
typed_object_attributes
is a filterable array that defines the expected typed structure for object-type block attributes.typed_object_attributes
correspond to object attribute names in the block.string
,integer
,object
, etc.).Defining Typed Object Attributes
Typed object attributes can be defined in two ways:
1. In a Child Class (
typed_object_attributes
property)Developers can extend the
Block
class and specify typed properties directly:2. Via WordPress Filter
You can also define typed structures dynamically using a WordPress filter.
Filter Naming Convention
To apply custom typing via a filter, use the following format:
/
in the block name with-
.my-custom-plugin/movie-block
wpgraphql_content_blocks_object_typing_my-custom-plugin_movie-block
Example:
Example
block.json
DefinitionIf the block has attributes defined as objects, like this:
This means:
film
attribute containsid
,title
,director
.soundtrack
attribute containstitle
andartist
.WPGraphQL Query Example
Once the typed object attributes are defined, you can query them individually in WPGraphQL.