wp_guess_url() – Guesses the URL for the site.

You appear to be a bot. Output may be restricted

Description

Guesses the URL for the site.

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

Usage

$string = wp_guess_url();

Parameters

Returns

string The guessed URL.

Source

File name: wordpress/wp-includes/functions.php
Lines:

1 to 38 of 38
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 ( strpos( $_SERVER['REQUEST_URI'], 'wp-admin' ) !== false || strpos( $_SERVER['REQUEST_URI'], 'wp-login.php' ) !== false ) {
      $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 ( false !== strpos( $_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 ( false !== strpos( $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, '/' );
}
 

 View on GitHub View on Trac