Make WordPress Core


Ignore:
Timestamp:
05/16/2010 09:58:31 PM (15 years ago)
Author:
wpmuguru
Message:

improvements to get_home/site_url, props andreasnrb + code cleanup, see #12735

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/wp-includes/link-template.php

    r14653 r14702  
    18471847    $orig_scheme = $scheme;
    18481848
    1849     if ( !in_array($scheme, array('http', 'https')) )
     1849    if ( !in_array( $scheme, array( 'http', 'https' ) ) )
    18501850        $scheme = is_ssl() && !is_admin() ? 'https' : 'http';
    18511851
    1852     if ( empty($blog_id) || !is_multisite() )
    1853         $home = get_option('home');
     1852    if ( empty( $blog_id ) || !is_multisite() )
     1853        $home = get_option( 'home' );
    18541854    else
    1855         $home = untrailingslashit(get_blogaddress_by_id($blog_id));
     1855        $home = get_blog_option( $blog_id, 'home' );
    18561856
    18571857    $url = str_replace( 'http://', "$scheme://", $home );
     
    19001900function get_site_url( $blog_id = null, $path = '', $scheme = null ) {
    19011901    // should the list of allowed schemes be maintained elsewhere?
     1902    $orig_scheme = $scheme;
     1903    if ( !in_array( $scheme, array( 'http', 'https' ) ) ) {
     1904        if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
     1905            $scheme = 'https';
     1906        elseif ( ( 'login' == $scheme ) && force_ssl_admin() )
     1907            $scheme = 'https';
     1908        elseif ( ( 'admin' == $scheme ) && force_ssl_admin() )
     1909            $scheme = 'https';
     1910        else
     1911            $scheme = ( is_ssl() ? 'https' : 'http' );
     1912    }
     1913
     1914    if ( empty( $blog_id ) || !is_multisite() )
     1915        $url = get_option( 'siteurl' );
     1916    else
     1917        $url = get_blog_option( $blog_id, 'siteurl' );
     1918
     1919    $url = str_replace( 'http://', "{$scheme}://", $url );
     1920
     1921    if ( !empty( $path ) && is_string( $path ) && strpos( $path, '..' ) === false )
     1922        $url .= '/' . ltrim( $path, '/' );
     1923
     1924    return apply_filters( 'site_url', $url, $path, $orig_scheme, $blog_id );
     1925}
     1926
     1927/**
     1928 * Retrieve the url to the admin area for the current site.
     1929 *
     1930 * @package WordPress
     1931 * @since 2.6.0
     1932 *
     1933 * @param string $path Optional path relative to the admin url
     1934 * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes.
     1935 * @return string Admin url link with optional path appended
     1936*/
     1937function admin_url( $path = '', $scheme = 'admin' ) {
     1938    return get_admin_url(null, $path, $scheme);
     1939}
     1940
     1941/**
     1942 * Retrieve the url to the admin area for a given site.
     1943 *
     1944 * @package WordPress
     1945 * @since 3.0.0
     1946 *
     1947 * @param int $blog_id (optional) Blog ID. Defaults to current blog.
     1948 * @param string $path Optional path relative to the admin url
     1949 * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes.
     1950 * @return string Admin url link with optional path appended
     1951*/
     1952function get_admin_url( $blog_id = null, $path = '', $scheme = 'admin' ) {
     1953    $url = get_site_url($blog_id, 'wp-admin/', $scheme);
     1954
     1955    if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     1956        $url .= ltrim($path, '/');
     1957
     1958    return apply_filters('admin_url', $url, $path, $blog_id);
     1959}
     1960
     1961/**
     1962 * Retrieve the url to the includes directory.
     1963 *
     1964 * @package WordPress
     1965 * @since 2.6.0
     1966 *
     1967 * @param string $path Optional. Path relative to the includes url.
     1968 * @return string Includes url link with optional path appended.
     1969*/
     1970function includes_url($path = '') {
     1971    $url = site_url() . '/' . WPINC . '/';
     1972
     1973    if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     1974        $url .= ltrim($path, '/');
     1975
     1976    return apply_filters('includes_url', $url, $path);
     1977}
     1978
     1979/**
     1980 * Retrieve the url to the content directory.
     1981 *
     1982 * @package WordPress
     1983 * @since 2.6.0
     1984 *
     1985 * @param string $path Optional. Path relative to the content url.
     1986 * @return string Content url link with optional path appended.
     1987*/
     1988function content_url($path = '') {
     1989    $url = WP_CONTENT_URL;
     1990    if ( 0 === strpos($url, 'http') && is_ssl() )
     1991        $url = str_replace( 'http://', 'https://', $url );
     1992
     1993    if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     1994        $url .= '/' . ltrim($path, '/');
     1995
     1996    return apply_filters('content_url', $url, $path);
     1997}
     1998
     1999/**
     2000 * Retrieve the url to the plugins directory or to a specific file within that directory.
     2001 * You can hardcode the plugin slug in $path or pass __FILE__ as a second argument to get the correct folder name.
     2002 *
     2003 * @package WordPress
     2004 * @since 2.6.0
     2005 *
     2006 * @param string $path Optional. Path relative to the plugins url.
     2007 * @param string $plugin Optional. The plugin file that you want to be relative to - i.e. pass in __FILE__
     2008 * @return string Plugins url link with optional path appended.
     2009*/
     2010function plugins_url($path = '', $plugin = '') {
     2011
     2012    $mu_plugin_dir = WPMU_PLUGIN_DIR;
     2013    foreach ( array('path', 'plugin', 'mu_plugin_dir') as $var ) {
     2014        $$var = str_replace('\\' ,'/', $$var); // sanitize for Win32 installs
     2015        $$var = preg_replace('|/+|', '/', $$var);
     2016    }
     2017
     2018    if ( !empty($plugin) && 0 === strpos($plugin, $mu_plugin_dir) )
     2019        $url = WPMU_PLUGIN_URL;
     2020    else
     2021        $url = WP_PLUGIN_URL;
     2022
     2023    if ( 0 === strpos($url, 'http') && is_ssl() )
     2024        $url = str_replace( 'http://', 'https://', $url );
     2025
     2026    if ( !empty($plugin) && is_string($plugin) ) {
     2027        $folder = dirname(plugin_basename($plugin));
     2028        if ( '.' != $folder )
     2029            $url .= '/' . ltrim($folder, '/');
     2030    }
     2031
     2032    if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
     2033        $url .= '/' . ltrim($path, '/');
     2034
     2035    return apply_filters('plugins_url', $url, $path, $plugin);
     2036}
     2037
     2038/**
     2039 * Retrieve the site url for the current network.
     2040 *
     2041 * Returns the site url with the appropriate protocol,  'https' if
     2042 * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
     2043 * overridden.
     2044 *
     2045 * @package WordPress
     2046 * @since 3.0.0
     2047 *
     2048 * @param string $path Optional. Path relative to the site url.
     2049 * @param string $scheme Optional. Scheme to give the site url context. Currently 'http','https', 'login', 'login_post', or 'admin'.
     2050 * @return string Site url link with optional path appended.
     2051*/
     2052function network_site_url( $path = '', $scheme = null ) {
     2053    global $current_site;
     2054
     2055    if ( !is_multisite() )
     2056        return site_url($path, $scheme);
     2057
    19022058    $orig_scheme = $scheme;
    19032059    if ( !in_array($scheme, array('http', 'https')) ) {
     
    19122068    }
    19132069
    1914     if ( empty($blog_id) || !is_multisite() )
    1915         $url = get_option('siteurl');
    1916     else
    1917         $url = untrailingslashit(get_blogaddress_by_id($blog_id));
    1918 
    1919     $url = str_replace( 'http://', "{$scheme}://", $url );
    1920 
    1921     if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
    1922         $url .= '/' . ltrim($path, '/');
    1923 
    1924     return apply_filters('site_url', $url, $path, $orig_scheme, $blog_id);
    1925 }
    1926 
    1927 /**
    1928  * Retrieve the url to the admin area for the current site.
    1929  *
    1930  * @package WordPress
    1931  * @since 2.6.0
    1932  *
    1933  * @param string $path Optional path relative to the admin url
    1934  * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes.
    1935  * @return string Admin url link with optional path appended
    1936 */
    1937 function admin_url( $path = '', $scheme = 'admin' ) {
    1938     return get_admin_url(null, $path, $scheme);
    1939 }
    1940 
    1941 /**
    1942  * Retrieve the url to the admin area for a given site.
    1943  *
    1944  * @package WordPress
    1945  * @since 3.0.0
    1946  *
    1947  * @param int $blog_id (optional) Blog ID. Defaults to current blog.
    1948  * @param string $path Optional path relative to the admin url
    1949  * @param string $scheme The scheme to use. Default is 'admin', which obeys force_ssl_admin() and is_ssl(). 'http' or 'https' can be passed to force those schemes.
    1950  * @return string Admin url link with optional path appended
    1951 */
    1952 function get_admin_url( $blog_id = null, $path = '', $scheme = 'admin' ) {
    1953     $url = get_site_url($blog_id, 'wp-admin/', $scheme);
    1954 
    1955     if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
    1956         $url .= ltrim($path, '/');
    1957 
    1958     return apply_filters('admin_url', $url, $path, $blog_id);
    1959 }
    1960 
    1961 /**
    1962  * Retrieve the url to the includes directory.
    1963  *
    1964  * @package WordPress
    1965  * @since 2.6.0
    1966  *
    1967  * @param string $path Optional. Path relative to the includes url.
    1968  * @return string Includes url link with optional path appended.
    1969 */
    1970 function includes_url($path = '') {
    1971     $url = site_url() . '/' . WPINC . '/';
    1972 
    1973     if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
    1974         $url .= ltrim($path, '/');
    1975 
    1976     return apply_filters('includes_url', $url, $path);
    1977 }
    1978 
    1979 /**
    1980  * Retrieve the url to the content directory.
    1981  *
    1982  * @package WordPress
    1983  * @since 2.6.0
    1984  *
    1985  * @param string $path Optional. Path relative to the content url.
    1986  * @return string Content url link with optional path appended.
    1987 */
    1988 function content_url($path = '') {
    1989     $url = WP_CONTENT_URL;
    1990     if ( 0 === strpos($url, 'http') && is_ssl() )
    1991         $url = str_replace( 'http://', 'https://', $url );
    1992 
    1993     if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
    1994         $url .= '/' . ltrim($path, '/');
    1995 
    1996     return apply_filters('content_url', $url, $path);
    1997 }
    1998 
    1999 /**
    2000  * Retrieve the url to the plugins directory or to a specific file within that directory.
    2001  * You can hardcode the plugin slug in $path or pass __FILE__ as a second argument to get the correct folder name.
    2002  *
    2003  * @package WordPress
    2004  * @since 2.6.0
    2005  *
    2006  * @param string $path Optional. Path relative to the plugins url.
    2007  * @param string $plugin Optional. The plugin file that you want to be relative to - i.e. pass in __FILE__
    2008  * @return string Plugins url link with optional path appended.
    2009 */
    2010 function plugins_url($path = '', $plugin = '') {
    2011 
    2012     $mu_plugin_dir = WPMU_PLUGIN_DIR;
    2013     foreach ( array('path', 'plugin', 'mu_plugin_dir') as $var ) {
    2014         $$var = str_replace('\\' ,'/', $$var); // sanitize for Win32 installs
    2015         $$var = preg_replace('|/+|', '/', $$var);
    2016     }
    2017 
    2018     if ( !empty($plugin) && 0 === strpos($plugin, $mu_plugin_dir) )
    2019         $url = WPMU_PLUGIN_URL;
    2020     else
    2021         $url = WP_PLUGIN_URL;
    2022 
    2023     if ( 0 === strpos($url, 'http') && is_ssl() )
    2024         $url = str_replace( 'http://', 'https://', $url );
    2025 
    2026     if ( !empty($plugin) && is_string($plugin) ) {
    2027         $folder = dirname(plugin_basename($plugin));
    2028         if ( '.' != $folder )
    2029             $url .= '/' . ltrim($folder, '/');
    2030     }
    2031 
    2032     if ( !empty($path) && is_string($path) && strpos($path, '..') === false )
    2033         $url .= '/' . ltrim($path, '/');
    2034 
    2035     return apply_filters('plugins_url', $url, $path, $plugin);
    2036 }
    2037 
    2038 /**
    2039  * Retrieve the site url for the current network.
    2040  *
    2041  * Returns the site url with the appropriate protocol,  'https' if
    2042  * is_ssl() and 'http' otherwise. If $scheme is 'http' or 'https', is_ssl() is
    2043  * overridden.
    2044  *
    2045  * @package WordPress
    2046  * @since 3.0.0
    2047  *
    2048  * @param string $path Optional. Path relative to the site url.
    2049  * @param string $scheme Optional. Scheme to give the site url context. Currently 'http','https', 'login', 'login_post', or 'admin'.
    2050  * @return string Site url link with optional path appended.
    2051 */
    2052 function network_site_url( $path = '', $scheme = null ) {
    2053     global $current_site;
    2054 
    2055     if ( !is_multisite() )
    2056         return site_url($path, $scheme);
    2057 
    2058     $orig_scheme = $scheme;
    2059     if ( !in_array($scheme, array('http', 'https')) ) {
    2060         if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) )
    2061             $scheme = 'https';
    2062         elseif ( ('login' == $scheme) && ( force_ssl_admin() ) )
    2063             $scheme = 'https';
    2064         elseif ( ('admin' == $scheme) && force_ssl_admin() )
    2065             $scheme = 'https';
    2066         else
    2067             $scheme = ( is_ssl() ? 'https' : 'http' );
    2068     }
    2069 
    20702070    $url = 'http://' . $current_site->domain . $current_site->path;
    20712071
Note: See TracChangeset for help on using the changeset viewer.