Make WordPress Core

Ticket #47244: 47244.3.diff

File 47244.3.diff, 2.2 KB (added by SergeyBiryukov, 5 years ago)
  • src/wp-includes/formatting.php

     
    30943096                $delimiter = trim( $rel_match[1] ) ? $rel_match[1] : '"';
    30953097                $rel       = 'rel=' . $delimiter . trim( implode( ' ', $parts ) ) . $delimiter;
    30963098                $link_html = str_replace( $rel_match[0], $rel, $link_html );
     3099        } elseif ( preg_match( '|target\s*=\s*?\\\\"|', $link_html ) ) {
     3100                $link_html .= " rel=\\\"$rel\\\"";
     3101        } elseif ( preg_match( '#(target|href)\s*=\s*?\'#', $link_html ) ) {
     3102                $link_html .= " rel='$rel'";
    30973103        } else {
    30983104                $link_html .= " rel=\"$rel\"";
    30993105        }
  • tests/phpunit/tests/formatting/WPTargetedLinkRel.php

     
    101101
    102102                $this->assertEquals( $expected, $post->post_content );
    103103        }
     104
     105        /**
     106         * Ensure JSON format is preserved when relation attribute (rel) is missing.
     107         *
     108         * @ticket 46316
     109         */
     110        public function test_wp_targeted_link_rel_should_preserve_json() {
     111                $content  = '<p>Links: <a href=\"\/\" target=\"_blank\">No rel<\/a><\/p>';
     112                $expected = '<p>Links: <a href=\"\/\" target=\"_blank\" rel=\"noopener noreferrer\">No rel<\/a><\/p>';
     113                $this->assertEquals( $expected, wp_targeted_link_rel( $content ) );
     114        }
     115
     116        /**
     117         * Ensure correct quotes are used when relation attribute (rel) is missing.
     118         *
     119         * @ticket 47244
     120         */
     121        public function test_wp_targeted_link_rel_should_use_correct_quotes() {
     122                $content  = '<p>Links: <a href=\'\/\' target=\'_blank\'>No rel<\/a><\/p>';
     123                $expected = '<p>Links: <a href=\'\/\' target=\'_blank\' rel=\'noopener noreferrer\'>No rel<\/a><\/p>';
     124                $this->assertEquals( $expected, wp_targeted_link_rel( $content ) );
     125
     126                $content  = '<p>Links: <a href=\'\/\' target=_blank>No rel<\/a><\/p>';
     127                $expected = '<p>Links: <a href=\'\/\' target=_blank rel=\'noopener noreferrer\'>No rel<\/a><\/p>';
     128                $this->assertEquals( $expected, wp_targeted_link_rel( $content ) );
     129        }
    104130}