[wp-trac] [WordPress Trac] #29807: add support for picture element and srcset attribute on img in wp_kses
WordPress Trac
noreply at wordpress.org
Wed Oct 3 06:00:38 UTC 2018
#29807: add support for picture element and srcset attribute on img in wp_kses
-------------------------------------------------+-------------------------
Reporter: mattheu | Owner: (none)
Type: enhancement | Status: new
Priority: normal | Milestone: Future
| Release
Component: Formatting | Version:
Severity: normal | Resolution:
Keywords: has-patch has-unit-tests needs- | Focuses:
refresh |
-------------------------------------------------+-------------------------
Comment (by 1000camels):
Replying to [comment:21 peterwilsoncc]:
> The refactor of `wp_kses_hair()` remains a gift for someone suitably
enthusiastic.
I am enthusiastic, but might not be skilled enough.
I wanted to discuss some approaches to dealing with the weird case of
srcset.
It strikes me that the first major issue is there are multiple values for
srcset, separated by a comma. This is similar to the style attribute,
which is delimited by ; and which has its own function to test it
(safecss_filter_attr). Are there any other html attributes that function
like this? If there are, it might make sense to develop an approach to
exploding multi-valued attributes, possibly putting them into their own
version of $attrarr element, and collapse these again, once they pass.
Of course, that doesn't deal with the additional 'width descriptor', so
perhaps the real way to approach this is to create a condition for srcset
in wp_kses_hair().
I've made a stab at this and I have allowed for the wp_kses_bad_protocol
to process any number of urls in srcset (or rather any attribute - is this
a problem?). It does nothing to process the width descriptor, which is
optional. It also does not check that there is a sizes attribute, which is
required. However, my sense is that this code is not validating the HTML
(which is fine according to Postel). It is rather just making sure we
don't allow bad markup, which in the case of picture, img and source, it
is primarily checking for valid structure and good protocols. So I think
this works.
Of course, it could also be written better, cleaner and more succinct, but
I will leave that to those who know better.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/29807#comment:26>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list