set_url_scheme()
Sets the current site protocol for the specified URL (link). If relative is specified in $scheme, it will return a relative URL.
The function does NOT add a scheme to an empty URL. If you specify like: example.org/what/ever, the function will not recognize that this is a URL and will not process such a string (it will return it as is). For this reason the original URL must always have a base scheme, for example, https://.
$url = 'example.org/what/ever/'; echo set_url_scheme( $url, 'https' ); // example.org/what/ever
Uses: is_ssl(), force_ssl_admin()
Used By: get_home_url()
1 time — 0.000017 sec (very fast) | 50000 times — 0.07 sec (speed of light) | PHP 7.0.2, WP 4.4.1
Hooks from the function
Returns
String. Modified URL for the selected scheme.
Usage
set_url_scheme( $url, $scheme );
- $url(string) (required)
- URL containing the http(s) protocol.
- $scheme(string/null)
Scheme according to which the URL should be changed. May be:
http https relative — returns a relative URL (without the domain). login — protocol of the login page login_post admin rest rpc null — current site protocol is_ssl()
Default: null (current site protocol is_ssl())
Examples
#1 Demo of protocol changes in the URL.
The code was executed on a site with HTTPS protocol by default:
$res = [ set_url_scheme( 'http://example.com/foo' ), //> https://example.com/foo OR http://example.com/foo set_url_scheme( 'http://example.com/foo', 'http' ), //> http://example.com/foo set_url_scheme( 'http://example.com/foo', 'https' ), //> https://example.com/foo set_url_scheme( 'http://example.com/foo', 'relative' ), //> /foo set_url_scheme( '//example.com/foo' ), //> https://example.com/foo OR http://example.com/foo set_url_scheme( '//example.com/foo', 'http' ), //> http://example.com/foo set_url_scheme( '//example.com/foo', 'https' ), //> https://example.com/foo set_url_scheme( '//example.com/foo', 'relative' ), //> /foo // Doesn't work with non-URL strings (return it as is) set_url_scheme( '/foo', 'https' ), //> /foo set_url_scheme( 'example.com/foo', 'https' ), //> example.com/foo // non-standard set_url_scheme( '///example.org/foo', 'https' ), //> https:///example.org/foo ]; print_r( $res );
Changelog
| Since 3.4.0 | Introduced. |
| Since 4.4.0 | The 'rest' scheme was added. |