[wp-trac] [WordPress Trac] #63287: Unexpected output from apply_block_hooks_to_content_from_post_object

WordPress Trac noreply at wordpress.org
Fri Apr 18 12:55:57 UTC 2025


#63287: Unexpected output from apply_block_hooks_to_content_from_post_object
--------------------------------------+------------------------------
 Reporter:  obenland                  |       Owner:  bernhard-reiter
     Type:  defect (bug)              |      Status:  closed
 Priority:  normal                    |   Milestone:  6.8.1
Component:  Editor                    |     Version:  6.8
 Severity:  normal                    |  Resolution:  fixed
 Keywords:  has-patch has-unit-tests  |     Focuses:
--------------------------------------+------------------------------
Changes (by Bernhard Reiter):

 * status:  assigned => closed
 * resolution:   => fixed


Comment:

 In [changeset:"60173" 60173]:
 {{{
 #!CommitTicketReference repository="" revision="60173"
 Block Hooks: Suppress insertion next to post content wrapper block.

 As of [59523], Block Hooks are applied to post content. In order to allow
 for insertion of a hooked block as `first_child` or `last_child` of the
 containing Post Content block, we wrap the block's post content (as
 obtained from the DB) in a temporary `<!-- wp:post-content -->` wrapper
 block, apply the Block Hooks algorithm to the resulting markup, and remove
 the wrapper block. (The same technique is applied for the Synced Pattern
 block -- see [59543] -- as well as the Navigation block.)

 However, this caused a problem when a hooked block was marked for
 insertion before `before` or `after` a Post Content block: The logic
 that's supposed to remove the temporary wrapper block after the Block
 Hooks algorithm runs erroneously removed that hooked block's delimiter
 instead of the wrapper block, producing garbled markup as a result.

 This changeset fixes the issue by adding a `hooked_block_types` filter
 (with `PHP_INT_MAX` priority) that removes any blocks hooked `before` or
 `after` a Post Content block, ''if'' the current context is a post object.
 This prevents any blocks hooked that way from being "absorbed" into the
 corresponding post object's content; it retains the ability to hook blocks
 `before` and `after` a Post Content block in any other context (e.g. a
 template). (The same principle is applied to Synced Pattern and Navigation
 blocks.)

 Props obenland, jorbin, gziolo, bernhard-reiter.
 Fixes #63287.
 }}}

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/63287#comment:12>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list