wp_guess_url(): string

In this article

Guesses the URL for the site.

Description

Will remove wp-admin links to retrieve only return URLs not in the wp-admin directory.

Return

string The guessed URL.

Source

function wp_guess_url() {	if ( defined( 'WP_SITEURL' ) && '' !== WP_SITEURL ) {	$url = WP_SITEURL;	} else {	$abspath_fix = str_replace( '\\', '/', ABSPATH );	$script_filename_dir = dirname( $_SERVER['SCRIPT_FILENAME'] );	// The request is for the admin.	if ( str_contains( $_SERVER['REQUEST_URI'], 'wp-admin' ) || str_contains( $_SERVER['REQUEST_URI'], 'wp-login.php' ) ) {	$path = preg_replace( '#/(wp-admin/?.*|wp-login\.php.*)#i', '', $_SERVER['REQUEST_URI'] );	// The request is for a file in ABSPATH.	} elseif ( $script_filename_dir . '/' === $abspath_fix ) {	// Strip off any file/query params in the path.	$path = preg_replace( '#/[^/]*$#i', '', $_SERVER['PHP_SELF'] );	} else {	if ( str_contains( $_SERVER['SCRIPT_FILENAME'], $abspath_fix ) ) {	// Request is hitting a file inside ABSPATH.	$directory = str_replace( ABSPATH, '', $script_filename_dir );	// Strip off the subdirectory, and any file/query params.	$path = preg_replace( '#/' . preg_quote( $directory, '#' ) . '/[^/]*$#i', '', $_SERVER['REQUEST_URI'] );	} elseif ( str_contains( $abspath_fix, $script_filename_dir ) ) {	// Request is hitting a file above ABSPATH.	$subdirectory = substr( $abspath_fix, strpos( $abspath_fix, $script_filename_dir ) + strlen( $script_filename_dir ) );	// Strip off any file/query params from the path, appending the subdirectory to the installation.	$path = preg_replace( '#/[^/]*$#i', '', $_SERVER['REQUEST_URI'] ) . $subdirectory;	} else {	$path = $_SERVER['REQUEST_URI'];	}	}	$schema = is_ssl() ? 'https://' : 'http://'; // set_url_scheme() is not defined yet.	$url = $schema . $_SERVER['HTTP_HOST'] . $path;	}	return rtrim( $url, '/' ); } 

Changelog

VersionDescription
2.6.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.