Formatting: Make sure links_add_target()
adds the target
attribute to the correct tag.
Previously, the attribute could unintentionally be added to a tag that starts with the same characters, e.g. `<aside>` instead of `<a>`. Props antonlukin. Fixes #51313. git-svn-id: https://develop.svn.wordpress.org/trunk@48983 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
parent
9648bcd373
commit
9cb0da3754
@ -5243,7 +5243,7 @@ function links_add_target( $content, $target = '_blank', $tags = array( 'a' ) )
|
|||||||
global $_links_add_target;
|
global $_links_add_target;
|
||||||
$_links_add_target = $target;
|
$_links_add_target = $target;
|
||||||
$tags = implode( '|', (array) $tags );
|
$tags = implode( '|', (array) $tags );
|
||||||
return preg_replace_callback( "!<($tags)([^>]*)>!i", '_links_add_target', $content );
|
return preg_replace_callback( "!<($tags)((\s[^>]*)?)>!i", '_links_add_target', $content );
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -64,6 +64,30 @@ class Tests_Formatting_LinksAddTarget extends WP_UnitTestCase {
|
|||||||
array( 'span' ),
|
array( 'span' ),
|
||||||
'MY CONTENT <div> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC">LINK</a> HERE </div> <span src="ABC" target="_top">END TEXT</span>',
|
'MY CONTENT <div> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC">LINK</a> HERE </div> <span src="ABC" target="_top">END TEXT</span>',
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'MY CONTENT <aside> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC">LINK</a> HERE </aside> END TEXT',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
'MY CONTENT <aside> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC" target="_blank">LINK</a> HERE </aside> END TEXT',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'MY CONTENT <aside class="_blank"> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC">LINK</a> HERE </aside> END TEXT',
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
'MY CONTENT <aside class="_blank"> SOME ADDITIONAL TEXT <a href="XYZ" src="ABC" target="_blank">LINK</a> HERE </aside> END TEXT',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'MY CONTENT <blockquote>SOME</blockquote> ADDITIONAL TEXT <b>LINK</b> HERE END TEXT',
|
||||||
|
'_blank',
|
||||||
|
array( 'b' ),
|
||||||
|
'MY CONTENT <blockquote>SOME</blockquote> ADDITIONAL TEXT <b target="_blank">LINK</b> HERE END TEXT',
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'MY CONTENT <blockquote target="_self">SOME</blockquote> ADDITIONAL TEXT <b>LINK</b> HERE END TEXT',
|
||||||
|
'_blank',
|
||||||
|
array( 'b' ),
|
||||||
|
'MY CONTENT <blockquote target="_self">SOME</blockquote> ADDITIONAL TEXT <b target="_blank">LINK</b> HERE END TEXT',
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user