-
Notifications
You must be signed in to change notification settings - Fork 17
feat: Adds property typing for an object attribute #338
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
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 |
theodesp
left a comment
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_typemethod, 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.jsonbut on thetyped_object_attributesprotected 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_attributesproperty or through a WordPress filter.How It Works
The
typed_object_attributesis a filterable array that defines the expected typed structure for object-type block attributes.typed_object_attributescorrespond 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_attributesproperty)Developers can extend the
Blockclass 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-blockwpgraphql_content_blocks_object_typing_my-custom-plugin_movie-blockExample:
Example
block.jsonDefinitionIf the block has attributes defined as objects, like this:
This means:
filmattribute containsid,title,director.soundtrackattribute containstitleandartist.WPGraphQL Query Example
Once the typed object attributes are defined, you can query them individually in WPGraphQL.