[wp-trac] [WordPress Trac] #42548: Widgets: Populate global $post with queried object on singular queries instead of nullifying it
WordPress Trac
noreply at wordpress.org
Tue Nov 14 18:02:43 UTC 2017
#42548: Widgets: Populate global $post with queried object on singular queries
instead of nullifying it
--------------------------+-----------------
Reporter: westonruter | Owner:
Type: defect (bug) | Status: new
Priority: normal | Milestone: 4.9
Component: Widgets | Version: 4.9
Severity: normal | Keywords:
Focuses: |
--------------------------+-----------------
Until 4.9, if a plugin did `add_filter( 'widget_text', 'do_shortcode' )`
and they added a `[gallery]` to a widget that is displayed on a singular
template, then the gallery would (usually) show the attachments from the
current queried post. This behavior changed in #10457 for 4.9 whereby the
global `$post` is nullified to ensure that the Text widget renders
consistently across whatever template it may appear (singular, archive,
404, etc).
There are two problems with this:
1. When `$post` is `null`, then the gallery shortcode will list out all
attachments from the media library. This could be embarrassing or at least
undesired.
2. If a site previously did rely on being able to render a gallery of
attached images for the current post in the sidebar, this is broken.
I think we can fix both of these issues simply by checking if
`is_singular()` and if so, set the `$post` to the current queried object
(`get_queried_object()`). This will ensure that the global `$post` isn't
coming from an unpredictable source (such as a previous query that failed
to call `wp_reset_postdata()`), which was a primary motivator for
nullifying the global `$post` to begin with.
This same approach can be done for the Custom HTML widget, which currently
doesn't nullify `$post` even though it does apply `widget_text` filters
(though not for shortcodes in core).
--
Ticket URL: <https://core.trac.wordpress.org/ticket/42548>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list