WordPress.org

Make WordPress Core

Ticket #34462: 34462.diff

File 34462.diff, 2.6 KB (added by pento, 5 years ago)
  • src/wp-includes/embed-functions.php

     
    465465
    466466        $embed_url = get_post_embed_url( $post );
    467467
    468         $output = "<script type='text/javascript'>\n";
     468        $output = '<blockquote><a href="' . get_permalink( $post ) . '">' . get_the_title( $post ) . "</a></blockquote>\n";
     469
     470        $output .= "<script type='text/javascript'>\n";
    469471        $output .= "<!--//--><![CDATA[//><!--\n";
    470472        if ( SCRIPT_DEBUG ) {
    471473                $output .= file_get_contents( ABSPATH . WPINC . '/js/wp-embed.js' );
     
    710712        }
    711713
    712714        $allowed_html = array(
    713                 'iframe' => array(
     715                'a'          => array(
     716                                'href' => true,
     717                ),
     718                'blockquote' => array(),
     719                'iframe'     => array(
    714720                        'src'          => true,
    715721                        'width'        => true,
    716722                        'height'       => true,
     
    724730        );
    725731
    726732        $html = wp_kses( $result, $allowed_html );
    727         preg_match( '|^.*(<iframe.*?></iframe>).*$|m', $html, $iframes );
    728733
    729         if ( empty( $iframes ) ) {
     734        preg_match( '|(<blockquote>.*?</blockquote>)?.*(<iframe.*?></iframe>)|ms', $html, $content );
     735        if ( empty( $content[1] ) && empty( $content[2] ) ) {
    730736                return false;
    731737        }
     738        $html = $content[1] . $content[2];
    732739
    733         $html = str_replace( '<iframe', '<iframe sandbox="allow-scripts" security="restricted"', $iframes[1] );
     740        $html = str_replace( '<iframe', '<iframe sandbox="allow-scripts" security="restricted"', $html );
    734741
    735742        preg_match( '/ src=[\'"]([^\'"]*)[\'"]/', $html, $results );
    736743
     
    740747                $url = esc_url( "{$results[1]}#?secret=$secret" );
    741748
    742749                $html = str_replace( $results[0], " src=\"$url\" data-secret=\"$secret\"", $html );
     750                $html = str_replace( '<blockquote', "<blockquote data-secret=\"$secret\"", $html );
    743751        }
    744752
    745753        return $html;
  • src/wp-includes/js/wp-embed.js

     
    1313                        return;
    1414                }
    1515
    16                 var iframes = document.querySelectorAll( '.wp-embedded-content[data-secret="' + data.secret + '"]' );
     16                var iframes = document.querySelectorAll( 'iframe[data-secret="' + data.secret + '"]' ),
     17                        blockquotes = document.querySelectorAll( 'blockquote[data-secret="' + data.secret + '"]' );
    1718
    18                 for ( var i = 0; i < iframes.length; i++ ) {
     19                for ( var i = 0; i < blockquotes.length; i++ ) {
     20                        blockquotes[ i ].style.display = 'none';
     21                }
     22
     23                for ( i = 0; i < iframes.length; i++ ) {
    1924                        var source = iframes[ i ];
    2025
    2126                        /* Resize the iframe on request. */