[wp-trac] [WordPress Trac] #10457: Parse shortcodes in text widgets by default
WordPress Trac
wp-trac at lists.automattic.com
Fri Dec 2 18:16:22 UTC 2011
#10457: Parse shortcodes in text widgets by default
--------------------------------+-----------------------
Reporter: ionfish | Owner: westi
Type: enhancement | Status: reopened
Priority: normal | Milestone: 3.3
Component: Widgets | Version: 2.8
Severity: normal | Resolution:
Keywords: westi-likes revert |
--------------------------------+-----------------------
Changes (by nacin):
* keywords: has-patch tested westi-likes commit => westi-likes revert
* status: closed => reopened
* resolution: fixed =>
Comment:
Unfortunately there are too many holes that can be poked in this. For
background, read #19411 and
[https://irclogs.wordpress.org/chanlog.php?channel=wordpress-
dev&day=2011-12-02&sort=asc#m341059 this IRC conversation].
Summarizing the problems as follows:
One, do_shortcode() would be running before our conditional wpautop() in
the text widget. Shortcodes are used to running both after wpautop() and
shortcode_unautop(). There are some ways around it, but it is going to be
very hacky, and each hack sacrifices something else.
For example, currently anything running on the widget_text filter is
always operating before wpautop(), so adding wpautop() to priority 10 will
break some things, especially since plugins also on priority 10 would run
after.
As a second example, I think do_shortcode() can only be run once against a
block of text, otherwise it risks executing escaped shortcodes (not tested
whether that is the case). So if a plugin is already adding do_shortcode()
to widget_text, we could assume priority 10 and either only add with
priority 10 (as trunk is now), or we'll need a delayed has_filter() check.
This is why I left do_shortcode() on priority 10 and shoehorned wpautop()
before it (for patches on #19411).
That's just the first problem. The second problem is what is resulting in
a revert here. Core only has three shortcodes: embed, gallery, and
caption. None of them are relevant for something other than a post. It
looks like the caption shortcode would work (but is pretty much useless)
and the gallery shortcode would just rely on whatever the post global is
currently.
But, the embed code would fail. Hard. I haven't tested, but my impression
would be that it would cache against the $post global. Since the specific
post would constantly change for the contexts of a sidebar, the oembed
response would get cached everywhere (first problem) and never be reliably
cached, resulting in HTTP requests on every pageload (second problem).
Only plugin shortcodes can benefit from adding do_shortcode() to
widget_text. Generally, we've used the guideline that until something
benefits something that core does, it's probably not worth it. Worse, in
this case, a core shortcode would result in bugs.
***
After writing all of this, upon further inspection of how the embed
handlers register the [embed] shortcode, it can only work for posts, and
will gracefully fail with `__return_false` for widgets.
However, I think there are enough problems here with wpautop/shortcodes to
revert and deal with it in 3.4, given we are in RC and it will only
benefit plugin shortcodes.
--
Ticket URL: <http://core.trac.wordpress.org/ticket/10457#comment:33>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software
More information about the wp-trac
mailing list