WP_Customize_Manager::get_return_url PHP Method

get_return_url() public method

Get URL to link the user to when closing the Customizer.
Since: 4.4.0
public get_return_url ( ) : string
return string URL for link to close Customizer.
    public function get_return_url()
    {
        $referer = wp_get_referer();
        $excluded_referer_basenames = array('customize.php', 'wp-login.php');
        if ($this->return_url) {
            $return_url = $this->return_url;
        } else {
            if ($referer && !in_array(basename(parse_url($referer, PHP_URL_PATH)), $excluded_referer_basenames, true)) {
                $return_url = $referer;
            } else {
                if ($this->preview_url) {
                    $return_url = $this->preview_url;
                } else {
                    $return_url = home_url('/');
                }
            }
        }
        return $return_url;
    }

Usage Example

Exemplo n.º 1
0
	/**
	 * Test get_return_url()/set_return_url() methods.
	 *
	 * @see WP_Customize_Manager::get_return_url()
	 * @see WP_Customize_Manager::set_return_url()
	 */
	function test_return_url() {
		wp_set_current_user( self::factory()->user->create( array( 'role' => 'author' ) ) );
		$this->assertEquals( home_url( '/' ), $this->manager->get_return_url() );

		wp_set_current_user( self::factory()->user->create( array( 'role' => 'administrator' ) ) );
		$this->assertTrue( current_user_can( 'edit_theme_options' ) );
		$this->assertEquals( home_url( '/' ), $this->manager->get_return_url() );

		$preview_url = home_url( '/foo/' );
		$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() );

		// See #35355.
		$_SERVER['HTTP_REFERER'] = wp_slash( admin_url( 'wp-login.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() );

		$url = 'http://badreferer.example.com/';
		$_SERVER['HTTP_REFERER'] = wp_slash( $url );
		$this->assertNotEquals( $url, $this->manager->get_return_url() );
		$this->assertEquals( $preview_url, $this->manager->get_return_url() );

		$this->manager->set_return_url( admin_url( 'edit.php?trashed=1' ) );
		$this->assertEquals( admin_url( 'edit.php' ), $this->manager->get_return_url() );
	}
All Usage Examples Of WP_Customize_Manager::get_return_url
WP_Customize_Manager