| 2201 | * Set the scheme for a URL |
| 2202 | * |
| 2203 | * @since 3.4.0 |
| 2204 | * |
| 2205 | * @param string $url Absolute url that includes a scheme |
| 2206 | * @param string $scheme Optional. Scheme to give $url. Currently 'http', 'https', 'login', 'login_post', 'admin', or 'relative'. |
| 2207 | * @return string $url URL with chosen scheme. |
| 2208 | */ |
| 2209 | function set_url_scheme( $url, $scheme = null ) { |
| 2210 | $orig_scheme = $scheme; |
| 2211 | if ( ! in_array( $scheme, array( 'http', 'https', 'relative' ) ) ) { |
| 2212 | if ( ( 'login_post' == $scheme || 'rpc' == $scheme ) && ( force_ssl_login() || force_ssl_admin() ) ) |
| 2213 | $scheme = 'https'; |
| 2214 | elseif ( ( 'login' == $scheme ) && force_ssl_admin() ) |
| 2215 | $scheme = 'https'; |
| 2216 | elseif ( ( 'admin' == $scheme ) && force_ssl_admin() ) |
| 2217 | $scheme = 'https'; |
| 2218 | else |
| 2219 | $scheme = ( is_ssl() ? 'https' : 'http' ); |
| 2220 | } |
| 2221 | |
| 2222 | if ( 'relative' == $scheme ) |
| 2223 | $url = preg_replace( '#^.+://[^/]*#', '', $url ); |
| 2224 | else |
| 2225 | $url = preg_replace( '#^.+://#', $scheme . '://', $url ); |
| 2226 | |
| 2227 | return apply_filters('set_url_scheme', $url, $scheme); |
| 2228 | } |
| 2229 | |
| 2230 | /** |