[wp-trac] [WordPress Trac] #65038: Shortcode block adds empty <p> tags around block output in widget/footer areas

WordPress Trac noreply at wordpress.org
Thu Apr 9 02:56:59 UTC 2026


#65038: Shortcode block adds empty <p> tags around block output in widget/footer
areas
-----------------------------+------------------------------
 Reporter:  frauinga         |       Owner:  (none)
     Type:  defect (bug)     |      Status:  new
 Priority:  normal           |   Milestone:  Awaiting Review
Component:  General          |     Version:  6.9.4
 Severity:  normal           |  Resolution:
 Keywords:  has-screenshots  |     Focuses:
-----------------------------+------------------------------
Description changed by sabernhardt:

Old description:

> In WordPress 6.9.4, using a Blocksy child theme, I’m seeing empty <p>
> tags around the output of shortcodes when they are placed in a Shortcode
> block or widget block inside the footer.
>
> The shortcode returns valid block‑level HTML (e.g. <ul class="widget-
> terminliste"> ... </ul>), but in the frontend it is rendered as:
>
> <div class="widget_block">
>     <p><ul class="widget-name"> ... </ul></p>
> </div>
>
> This results in invalid HTML, since a <ul> must not be a direct child of
> <p>. The browser repairs this by creating an empty <p> element, which
> shows up in the DOM inspector as <p></p> and causes unnecessary vertical
> spacing, especially in the footer where layout is tight.
>
> **Steps to reproduce**
>
> 1. WordPress 6.9.4 with the Blocksy theme and a child theme based on it.
> 2. Add a Shortcode block (or “Shortcode” widget) in the footer widget
> area (or any footer block region).
> 3. Insert a shortcode that returns block‑level HTML, e.g. <ul>, <div>, or
> similar.
> 4. View the page in the browser and inspect the HTML.
>     You will see something like <p><ul> ... </ul></p> and, in the DOM
> tree, an empty <p>.
>
> **Expected behavior**
>
> - The shortcode output should be rendered without extra <p> tags around
> it.
> - The HTML should be valid (e.g. <ul> not inside <p>).
> - No empty <p> elements should appear in the DOM.
>
> **Actual behavior**
> - WordPress wraps the shortcode output in a <p> in the widget/footer
> context.
> - This leads to invalid HTML and an empty <p> in the DOM, causing layout
> issues.
>
> **Environment**
>
> - WordPress version: 6.9.4
> - Theme: Blocksy
> - Child theme: yes
> - Context: footer widget / shortcode block
>
> **Notes**
>
> - The same behavior occurs with different shortcodes, including Blocksy’s
> own example shortcodes, so it does not seem to be related to a specific
> theme function.
> - A CSS workaround (hiding p:empty or p containing .widget-terminliste)
> is possible, but the root cause lies in shortcode/block rendering in
> widget/footer contexts and should be handled in core or Gutenberg.
> - The site is still under construction

New description:

 In WordPress 6.9.4, using a Blocksy child theme, I’m seeing empty `<p>`
 tags around the output of shortcodes when they are placed in a Shortcode
 block or widget block inside the footer.

 The shortcode returns valid block‑level HTML (e.g. `<ul class="widget-
 terminliste"> ... </ul>`), but in the frontend it is rendered as:
 {{{
 <div class="widget_block">
     <p><ul class="widget-name"> ... </ul></p>
 </div>
 }}}

 This results in invalid HTML, since a `<ul>` must not be a direct child of
 <p>. The browser repairs this by creating an empty `<p>` element, which
 shows up in the DOM inspector as `<p></p>` and causes unnecessary vertical
 spacing, especially in the footer where layout is tight.

 **Steps to reproduce**

 1. WordPress 6.9.4 with the Blocksy theme and a child theme based on it.
 2. Add a Shortcode block (or “Shortcode” widget) in the footer widget area
 (or any footer block region).
 3. Insert a shortcode that returns block‑level HTML, e.g. `<ul>`, `<div>`,
 or similar.
 4. View the page in the browser and inspect the HTML. \\
    You will see something like `<p><ul> ... </ul></p>` and, in the DOM
 tree, an empty `<p>`.

 **Expected behavior**

 - The shortcode output should be rendered without extra `<p>` tags around
 it.
 - The HTML should be valid (e.g. `<ul>` not inside `<p>`).
 - No empty `<p>` elements should appear in the DOM.

 **Actual behavior**
 - WordPress wraps the shortcode output in a `<p>` in the widget/footer
 context.
 - This leads to invalid HTML and an empty `<p>` in the DOM, causing layout
 issues.

 **Environment**

 - WordPress version: 6.9.4
 - Theme: Blocksy
 - Child theme: yes
 - Context: footer widget / shortcode block

 **Notes**

 - The same behavior occurs with different shortcodes, including Blocksy’s
 own example shortcodes, so it does not seem to be related to a specific
 theme function.
 - A CSS workaround (hiding `p:empty` or `p` containing `.widget-
 terminliste`) is possible, but the root cause lies in shortcode/block
 rendering in widget/footer contexts and should be handled in core or
 Gutenberg.
 - The site is still under construction

--

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


More information about the wp-trac mailing list