Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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
Block Hooks: Apply to Post Content (on frontend and in editor) #7898
Block Hooks: Apply to Post Content (on frontend and in editor) #7898
Changes from 18 commits
0711c61
b40dd94
20a5470
90abff4
0b844b3
838a75e
6793b55
2958c64
74b39fa
007d7a4
1d98a27
c6c8481
f29b288
a5cb598
886d375
89b835d
e14db01
7635d23
2b7d36a
a7693b0
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
What about synced patterns
wp/block
? Should it be extensible? These post types are special do maybe it’s fine as is but a filter here could be useful.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.
Ah, good point. I guess the
wp_block
post type should map tocore/block
.A filter might make sense here 👍 Something to map post types to block types. (I wonder if we already have a function or data structure to do that somewhere 🤔 )
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.
I've finally tested this with a synced pattern, and it's currently not inserting hooked blocks.
Simply adding
elseif ( 'wp_block' === $post->post_type ) { $wrapper_block_type = 'core/block'; }
didn't do the trick, so I'll have to look into this a bit more. However, since this PR has been open for a while and seems to be ready otherwise, I'll merge it and tackle synced patterns in a follow-up 😊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.
That's fair. It was also discussed in https://github.com/WordPress/wordpress-develop/pull/7898/files#r1867470796 to add support for every post type. The challenge with Patterns is that they are handled out of the box if they come from files bundled from the theme or when registered with PHP. The last missing puzzle would be a synced version of the pattern.
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.
We're now inserting hooked blocks and setting
ignoredHookedBlocks
metadata. Previously, we were only inserting hooked blocks (i.e. the default behavior ofapply_block_hooks_to_content
when no third argument is given).This change also affects the Navigation block. We need to make sure that any hooked blocks inside of the Navigation block -- both as first/last child of
core/navigation
itself, but alsoafter
/before
blocks inside of the Navigation block -- still work (both on the frontend and in the editor.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.
To test if the Navigation block still works, we can follow the testing instructions from WordPress/gutenberg#59021.
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.
Turns out there was an unrelated issue with this. I've filed a fix: #7941
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.
I've committed #7941 to Core
[62639]
, and rebased this PR to include the fix.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.
Quoting #7889 (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.
This follows the precedent of
rest_prepare_wp_navigation
below. However, it has the unfortunate side effect that Block Hooks aren't automatically applied to user-defined CPTs; those would need to be added manually (viaadd_filter( 'rest_prepare_my_cpt', ... )
). (AFAIK, there's no "generic"rest_prepare
filter that could cover all post types.)I wonder if we should run
insert_hooked_blocks_into_rest_response
from inside the Posts controller instead, in order to insert hooked blocks into every CPT that hasshow_in_rest
set totrue
🤔 cc/ @gzioloThere 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.
It would be worthwhile to explore supporting other types than
post
,page
, andwp_navigation
.