diff --git a/src/wp-includes/class-wp-admin-bar.php b/src/wp-includes/class-wp-admin-bar.php
index 72b7ce4111..25830d1309 100644
a
|
b
|
class WP_Admin_Bar { |
153 | 153 | $args['meta'] = wp_parse_args( $args['meta'], $defaults['meta'] ); |
154 | 154 | } |
155 | 155 | |
| 156 | if ( isset( $args['meta'], $args['meta']['target'] ) && '_blank' === strtolower( $args['meta']['target'] ) ) { |
| 157 | $rel = 'noopener noreferrer'; |
| 158 | |
| 159 | if ( isset( $args['meta']['rel'] ) ) { |
| 160 | $rel .= ' ' . $args['meta']['rel']; |
| 161 | } |
| 162 | |
| 163 | $args['meta']['rel'] = $rel; |
| 164 | } |
| 165 | |
156 | 166 | $args = wp_parse_args( $args, $defaults ); |
157 | 167 | |
158 | 168 | $back_compat_parents = array( |
diff --git a/tests/phpunit/tests/adminbar.php b/tests/phpunit/tests/adminbar.php
index 9eff0e150e..eee38442c3 100644
a
|
b
|
class Tests_AdminBar extends WP_UnitTestCase { |
79 | 79 | ); |
80 | 80 | } |
81 | 81 | |
| 82 | /** |
| 83 | * @ticket 37941 |
| 84 | */ |
| 85 | public function test_it_adds_rel_to_target_blank_links() { |
| 86 | $admin_bar = new WP_Admin_Bar; |
| 87 | |
| 88 | $admin_bar->add_node( |
| 89 | array( |
| 90 | 'id' => 'test-node', |
| 91 | 'meta' => [ 'target' => '_blank' ], |
| 92 | ) |
| 93 | ); |
| 94 | |
| 95 | $test_node = $admin_bar->get_node( 'test-node' ); |
| 96 | |
| 97 | $this->assertEquals( |
| 98 | [ 'target' => '_blank', 'rel' => 'noopener noreferrer' ], |
| 99 | $test_node->meta |
| 100 | ); |
| 101 | |
| 102 | $admin_bar->add_node( |
| 103 | array( |
| 104 | 'id' => 'test-node-2', |
| 105 | 'meta' => [ 'target' => '_BLANK' ], |
| 106 | ) |
| 107 | ); |
| 108 | |
| 109 | $test_node_2 = $admin_bar->get_node( 'test-node-2' ); |
| 110 | |
| 111 | $this->assertEquals( |
| 112 | [ 'target' => '_BLANK', 'rel' => 'noopener noreferrer' ], |
| 113 | $test_node_2->meta |
| 114 | ); |
| 115 | |
| 116 | $admin_bar->add_node( |
| 117 | array( |
| 118 | 'id' => 'test-node-3', |
| 119 | 'meta' => [ 'target' => '_blank', 'rel' => 'nofollow' ], |
| 120 | ) |
| 121 | ); |
| 122 | |
| 123 | $test_node_3 = $admin_bar->get_node( 'test-node-3' ); |
| 124 | |
| 125 | $this->assertEquals( |
| 126 | [ 'target' => '_blank', 'rel' => 'noopener noreferrer nofollow' ], |
| 127 | $test_node_3->meta |
| 128 | ); |
| 129 | } |
| 130 | |
82 | 131 | /** |
83 | 132 | * @ticket 25162 |
84 | 133 | * @group ms-excluded |