diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php index fcc9697fd6..baa50dfa62 100644 --- a/src/wp-includes/class-wp-customize-manager.php +++ b/src/wp-includes/class-wp-customize-manager.php @@ -1476,7 +1476,7 @@ final class WP_Customize_Manager { $referer = wp_get_referer(); if ( $this->return_url ) { $return_url = $this->return_url; - } else if ( $referer ) { + } else if ( $referer && 'customize.php' !== basename( parse_url( $referer, PHP_URL_PATH ) ) ) { $return_url = $referer; } else if ( $this->preview_url ) { $return_url = $this->preview_url; diff --git a/tests/phpunit/tests/customize/manager.php b/tests/phpunit/tests/customize/manager.php index 247f7651b2..481fe61dde 100644 --- a/tests/phpunit/tests/customize/manager.php +++ b/tests/phpunit/tests/customize/manager.php @@ -262,6 +262,9 @@ class Tests_WP_Customize_Manager extends WP_UnitTestCase { $this->manager->set_preview_url( $preview_url ); $this->assertEquals( $preview_url, $this->manager->get_return_url() ); + $_SERVER['HTTP_REFERER'] = wp_slash( admin_url( 'customize.php' ) ); + $this->assertEquals( $preview_url, $this->manager->get_return_url() ); + $url = home_url( '/referred/' ); $_SERVER['HTTP_REFERER'] = wp_slash( $url ); $this->assertEquals( $url, $this->manager->get_return_url() );