WordPress函数 set_url_scheme 用来给给url设置合适的scheme。

原型

1
set_url_scheme( string  $url , string|null  $scheme  =  null  )

参数

$url ( string ) (必需) 包含 scheme 的 URL

$scheme ( string | null ) (可选) 提供 $url 的方案。当前为 ‘http’、’https’、’login’、’login_post’、’admin’、’relative’、’rest’、’rpc’ 或 null。

返回

设置了合适的scheme的url

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function set_url_scheme( $url, $scheme = null ) {
    $orig_scheme = $scheme;
 
    if ( ! $scheme ) {
        $scheme = is_ssl() ? 'https' : 'http';
    } elseif ( 'admin' === $scheme || 'login' === $scheme || 'login_post' === $scheme || 'rpc' === $scheme ) {
        $scheme = is_ssl() || force_ssl_admin() ? 'https' : 'http';
    } elseif ( 'http' !== $scheme && 'https' !== $scheme && 'relative' !== $scheme ) {
        $scheme = is_ssl() ? 'https' : 'http';
    }
 
    $url = trim( $url );
    if ( substr( $url, 0, 2 ) === '//' ) {
        $url = 'http:' . $url;
    }
 
    if ( 'relative' === $scheme ) {
        $url = ltrim( preg_replace( '#^\w+://[^/]*#', '', $url ) );
        if ( '' !== $url && '/' === $url[0] ) {
            $url = '/' . ltrim( $url, "/ \t\n\r\0\x0B" );
        }
    } else {
        $url = preg_replace( '#^\w+://#', $scheme . '://', $url );
    }
 
    /**
     * Filters the resulting URL after setting the scheme.
     *
     * @since 3.4.0
     *
     * @param string      $url         The complete URL including scheme and path.
     * @param string      $scheme      Scheme applied to the URL. One of 'http', 'https', or 'relative'.
     * @param string|null $orig_scheme Scheme requested for the URL. One of 'http', 'https', 'login',
     *                                 'login_post', 'admin', 'relative', 'rest', 'rpc', or null.
     */
    return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
}

举例

1
2
3
4
5
6
7
8
$url = 'http://example.org/some/permalink';
 
print_r( set_url_scheme( $url ) );
// If is_ssl() is true:
// Result: 'https://example.org/some/permalink
//
// If is_ssl() is false:
// Result: 'http://example.org/some/permalink (no change)

版权声明:部分文章、图片等内容为用户发布或互联网整理而来,仅供学习参考。如有侵犯您的版权,请联系我们,将立刻删除。