diff --git src/wp-includes/class-wp-customize-manager.php src/wp-includes/class-wp-customize-manager.php
index 00c54c7..247d045 100644
|
|
final class WP_Customize_Manager { |
1398 | 1398 | * @return string |
1399 | 1399 | */ |
1400 | 1400 | public function get_return_url() { |
| 1401 | $referer = wp_get_referer(); |
1401 | 1402 | if ( $this->return_url ) { |
1402 | 1403 | $return_url = $this->return_url; |
| 1404 | } else if ( $referer ) { |
| 1405 | $return_url = $referer; |
1403 | 1406 | } else if ( $this->preview_url ) { |
1404 | 1407 | $return_url = $this->preview_url; |
1405 | | } else if ( current_user_can( 'edit_theme_options' ) || current_user_can( 'switch_themes' ) ) { |
1406 | | $return_url = admin_url( 'themes.php' ); |
1407 | 1408 | } else { |
1408 | | $return_url = admin_url(); |
| 1409 | $return_url = home_url( '/' ); |
1409 | 1410 | } |
1410 | 1411 | return $return_url; |
1411 | 1412 | } |
diff --git tests/phpunit/tests/customize/manager.php tests/phpunit/tests/customize/manager.php
index a484a8a..098b4e0 100644
|
|
class Tests_WP_Customize_Manager extends WP_UnitTestCase { |
252 | 252 | */ |
253 | 253 | function test_return_url() { |
254 | 254 | wp_set_current_user( $this->factory->user->create( array( 'role' => 'author' ) ) ); |
255 | | $this->assertEquals( get_admin_url(), $this->manager->get_return_url() ); |
| 255 | $this->assertEquals( home_url( '/' ), $this->manager->get_return_url() ); |
256 | 256 | |
257 | 257 | wp_set_current_user( $this->factory->user->create( array( 'role' => 'administrator' ) ) ); |
258 | 258 | $this->assertTrue( current_user_can( 'edit_theme_options' ) ); |
259 | | $this->assertEquals( admin_url( 'themes.php' ), $this->manager->get_return_url() ); |
| 259 | $this->assertEquals( home_url( '/' ), $this->manager->get_return_url() ); |
260 | 260 | |
261 | 261 | $preview_url = home_url( '/foo/' ); |
262 | 262 | $this->manager->set_preview_url( $preview_url ); |
263 | 263 | $this->assertEquals( $preview_url, $this->manager->get_return_url() ); |
264 | 264 | |
| 265 | $url = home_url( '/referred/' ); |
| 266 | $_SERVER['HTTP_REFERER'] = wp_slash( $url ); |
| 267 | $this->assertEquals( $url, $this->manager->get_return_url() ); |
| 268 | |
| 269 | $url = 'http://badreferer.example.com/'; |
| 270 | $_SERVER['HTTP_REFERER'] = wp_slash( $url ); |
| 271 | $this->assertNotEquals( $url, $this->manager->get_return_url() ); |
| 272 | $this->assertEquals( $preview_url, $this->manager->get_return_url() ); |
| 273 | |
265 | 274 | $this->manager->set_return_url( admin_url( 'edit.php?trashed=1' ) ); |
266 | 275 | $this->assertEquals( admin_url( 'edit.php' ), $this->manager->get_return_url() ); |
267 | 276 | } |