[wp-trac] [WordPress Trac] #51417: TinyMCE stripping <picture> tags
WordPress Trac
noreply at wordpress.org
Thu Nov 5 10:31:39 UTC 2020
#51417: TinyMCE stripping <picture> tags
-------------------------------+-----------------------------
Reporter: Grzegorz.Janoszka | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Future Release
Component: TinyMCE | Version: 5.5.1
Severity: normal | Resolution:
Keywords: needs-patch | Focuses:
-------------------------------+-----------------------------
Description changed by SergeyBiryukov:
Old description:
> Hi,
> We have new, way more efficient graphic formats coming - avif and webp.
> They are already supported by Firefox and Chrome. The recommended and
> backwards compatible method of inserting them is using a picture tag with
> an img fallback, for example:
>
> <picture>
> <source srcset="example.avif" type="image/avif">
> <source srcset="fallback.webp" type="image/webp">
> <img src="fallback.jpg" alt="AVIF example with WebP and JPEG fallback">
> </picture>
>
> Using the filter tiny_mce_before_init I can make TinyMCE accept the code
> if it is not surrounded by caption shortcode. Unfortunately the editor
> handles the [caption] code in javascript, the file is wp-
> includes/js/tinymce/plugins/wpeditimage/plugin.js
> and it has a filter:
>
> img = c.match( /((?:<a [^>]+>)?<img
> [^>]+>(?:<\/a>)?)([\s\S]*)/i );
>
> which removes everything except a and img tags. So <picture> and <source>
> become stripped. There is no filter nor configuration to modify how that
> JS works.
>
> I am not asking for a full <picture> support in WordPress. All I would
> love to see is to see TinyMCE not stripping <picture> and <source> tag
> when I place them inside caption. All the rest of WP support for AVIF can
> already be achieved using the existing filters like image_send_to_editor.
New description:
Hi,
We have new, way more efficient graphic formats coming - avif and webp.
They are already supported by Firefox and Chrome. The recommended and
backwards compatible method of inserting them is using a picture tag with
an img fallback, for example:
{{{
<picture>
<source srcset="example.avif" type="image/avif">
<source srcset="fallback.webp" type="image/webp">
<img src="fallback.jpg" alt="AVIF example with WebP and JPEG fallback">
</picture>
}}}
Using the filter tiny_mce_before_init I can make TinyMCE accept the code
if it is not surrounded by caption shortcode. Unfortunately the editor
handles the [caption] code in javascript, the file is wp-
includes/js/tinymce/plugins/wpeditimage/plugin.js
and it has a filter:
{{{
img = c.match( /((?:<a [^>]+>)?<img [^>]+>(?:<\/a>)?)([\s\S]*)/i );
}}}
which removes everything except a and img tags. So <picture> and <source>
become stripped. There is no filter nor configuration to modify how that
JS works.
I am not asking for a full <picture> support in WordPress. All I would
love to see is to see TinyMCE not stripping <picture> and <source> tag
when I place them inside caption. All the rest of WP support for AVIF can
already be achieved using the existing filters like image_send_to_editor.
--
--
Ticket URL: <https://core.trac.wordpress.org/ticket/51417#comment:4>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list