WordPress.org

Make WordPress Core

Ticket #18311: 18311.2.patch

File 18311.2.patch, 1.4 KB (added by kurtpayne, 7 years ago)

Adding render_html attribute, default to false for backwards compatibility

  • wp-includes/media.php

     
    731731                return $output;
    732732
    733733        extract(shortcode_atts(array(
    734                 'id'    => '',
    735                 'align' => 'alignnone',
    736                 'width' => '',
    737                 'caption' => ''
     734                'id'          => '',
     735                'align'       => 'alignnone',
     736                'width'       => '',
     737                'caption'     => '',
     738                'render_html' => 'false'
    738739        ), $attr));
    739740
     741        // Render html in the caption
     742        if ( 'true' === $render_html ) {
     743
     744                // Restore the original HTML
     745                $_caption = html_entity_decode($caption);
     746
     747                // Only allow a subset of tags
     748                $allowed_tags = array('strong', 'em', 'a');
     749
     750                // Set those tags aside
     751                if ( preg_match_all('/<\/?([a-zA-Z]+).*?>/S', $_caption, $matches) ) {
     752                        $i = 0;
     753                        $searches = array();
     754                        $replacements = array();
     755                        foreach ( $matches[0] as $k => $v ) {
     756                                if (in_array($matches[1][$k], $allowed_tags) ) {
     757                                        $_caption = str_replace($v, 'tag-' . $i, $_caption);
     758                                        $searches[] = 'tag-' . $i++;
     759                                        $replacements[] = $v;
     760                                }
     761                        }
     762
     763                        // Re-encode the caption
     764                        $_caption = htmlentities($_caption);
     765
     766                        // Restore the allowed HTML
     767                        $caption = str_replace($searches, $replacements, $_caption);
     768                }
     769        }
     770
    740771        if ( 1 > (int) $width || empty($caption) )
    741772                return $content;
    742773