[wp-trac] [WordPress Trac] #64944: Generated Excerpts - Missing white space when stripping <br>s generated in paragraph block, verse block, etc.

WordPress Trac noreply at wordpress.org
Tue Mar 24 18:48:21 UTC 2026


#64944: Generated Excerpts - Missing white space when stripping <br>s generated in
paragraph block, verse block, etc.
--------------------------+-----------------------------
 Reporter:  addiestavlo   |      Owner:  (none)
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  General       |    Version:  6.9
 Severity:  normal        |   Keywords:  has-patch
  Focuses:                |
--------------------------+-----------------------------
 When using the verse block (or similarly paragraph block and "shft +
 enter" spacing), `<br>`s are added in the block's content between lines.
 When WordPress generates an excerpt (when no custom excerpt is set), these
 `<br>`s are stripped along with other html tags. This often creates
 excerpts with missing spaces between words.

 Consider the common poetry formatting where multiple lines exist in a
 paragraph block to represent a stanza.

 On the code side of the editor this looks like:
 ```
 <!-- wp:verse -->
 <pre class="wp-block-verse">this is<br>a verse block<br>it has<br>the same
 issues</pre>
 <!-- /wp:verse -->
 ```
 or
 ```<!-- wp:paragraph -->
 <p>This is a poem<br>using shft+space<br>Inside a paragraph block<br>for
 good stanza formatting</p>
 <!-- /wp:paragraph -->```

 When WP generates an excerpt based off the post content this ends up as:
 "this isa verse blockit hasthe same issues"
 or
 "This is a poemusing shift+spaceInside a paragraph blockfor good stanza
 formatting."

 This shows up often in excerpts generated from content corresponding to
 poety, song lyrics, or other similar formats. When excerpts are used in
 any context (post previews, email subject descriptions, etc.) these
 missing white spaces obviously look horrible.

 ### To Reproduce (recently tested in WP Playground on 6.9):
 * Create a new post using a paragraph of verse block. For the verse block,
 standard "enter" to add new lines will repro the issue. For the paragraph
 block, "shft + enter" to create new lines within the block.
 * Do not create a custom excerpt.
 * Publish the post.
 * Run get_the_excerpt for the post.
 * Verify that there are no spaces between the last words of one line and
 first words of the next.


 ### How to fix?
 I am uncertain on the best approach to resolve some notes:

 `wp_trim_excerpt` - calls get_the_content when no excerpt text is passed
 to it. Later calls `wp_trim_words`

 `wp_trim_words` - calls `wp_strip_all_tags` and later creates a
 `$words_array` using preg_split on the "/[\n\r\t ]+/" pattern.

 `wp_strip_all_tags` - strips all the tags in a preg_replace. Later, if
 $remove_breaks is true, replaces '/[\r\n\t ]+/' patterns with spaces. In
 the current chain in this context $remove_breaks is false so this doesn't
 happen here, and the preg_split noted above in `wp_trim_words` will find
 these.

 One thought, if `wp_strip_all_tags` similarly considered `<br>`s in the
 $remove_breaks block AND moved this handling before the preg_replace that
 strips tags, that seems like potentially a general improvement. If the
 goal is to replace breaks with spaces, then `<br>`s should be considered
 there. However, we don't call $remove breaks in our context coming from
 `wp_trim_words` and it may not make sense to add that there.

 Another thought, would it make sense for `wp_trim_words` to replace
 `<br>`s with spaces before calling `wp_strip_all_tags` ? Those spaces
 would then be caught by the pattern in the preg_split creating the
 $words_array.

 I am attaching a diff for the latter. `<br>` tags are stripped without
 preserving spacing, causing words to concatenate (e.g., ‘thisexample’).
 This replaces `<br>` with a space before tag stripping to preserve word
 boundaries.

-- 
Ticket URL: <https://core.trac.wordpress.org/ticket/64944>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform


More information about the wp-trac mailing list