WordPress.org

Make WordPress Core

Ticket #33106: 33106.3.patch

File 33106.3.patch, 1.3 KB (added by azaozz, 5 years ago)

Alt patch for autoembed

  • src/wp-includes/class-wp-embed.php

     
    318318         * @return string Potentially modified $content.
    319319         */
    320320        public function autoembed( $content ) {
    321                 // Strip newlines from all elements.
    322                 $content = wp_replace_in_html_tags( $content, array( "\n" => " " ) );
     321                $r = '';
     322                $contentarr = preg_split( '/(<[^>]+>)/', $content, -1, PREG_SPLIT_DELIM_CAPTURE );
     323                $in_link = false;
    323324
    324                 // Find URLs that are on their own line.
    325                 return preg_replace_callback( '|^(\s*)(https?://[^\s"]+)(\s*)$|im', array( $this, 'autoembed_callback' ), $content );
     325                foreach ( $contentarr as $piece ) {
     326                        $last_piece = $piece;
     327
     328                        if ( empty( $piece ) || $piece[0] === '<' ) {
     329                                $in_link = ( 0 === stripos( $piece, '<a' ) );
     330                                $r .= $piece;
     331                                continue;
     332                        }
     333
     334                        if ( false !== stripos( $piece, 'http' ) ) {
     335                                // If an URL is wrapped in a link, skip it
     336                                if ( $in_link && false !== stripos( $last_piece, trim( $piece ) ) ) {
     337                                        $r .= $piece;
     338                                        continue;       
     339                                }
     340
     341                                $r .= preg_replace_callback( '|^(\s*)(https?://[^\s"]+)(\s*)$|im', array( $this, 'autoembed_callback' ), $piece );
     342                        } else {
     343                                $r .= $piece;
     344                        }
     345                }
     346
     347                return $r;
    326348        }
    327349
    328350        /**