Функция SET_URL_SCHEME() в WordPress: использование и примеры

Функция SET_URL_SCHEME() в WordPress

Функция set_url_scheme() в WordPress позволяет задать схему (протокол) для URL. Эта функция полезна для того, чтобы корректно указать, используем ли мы HTTP или HTTPS для наших ссылок.

Использование функции

Функция вызывается следующим образом:

set_url_scheme( $url, $scheme );

Параметры:

  • $url (string) — обязательный параметр. Это абсолютный URL, который включает схему.
  • $scheme (string|null) — схема, которую мы хотим задать для URL. Это может быть:

    • 'http'
    • 'https'
    • 'login'
    • 'login_post'
    • 'admin'
    • 'relative'
    • 'rest'
    • 'rpc'
    • null

    По умолчанию — null.

Возвращаемое значение

Функция возвращает строку, которая представляет собой URL с установленной схемой.

Примеры использования

Рассмотрим несколько примеров работы функции set_url_scheme().

Пример 1: Изменение протокола

$res = [
    set_url_scheme( 'http://example.com/foo' ),             //> https://example.com/foo или 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
];

// Печатаем результат
print_r( $res );

Пример 2: Не стандартные URL

$res = [
    set_url_scheme( '//example.com/foo' ),                   //> https://example.com/foo или 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
];

// Печатаем результат
print_r( $res );

Пример 3: Обработка некорректных строк

$res = [
    // Не работает с не URL строками (возвращает как есть)
    set_url_scheme( '/foo', 'https' ),                       //> /foo
    set_url_scheme( 'example.com/foo', 'https' ),            //> example.com/foo
];

// Печатаем результат
print_r( $res );

Подробное описание реализации функции

Вот как выглядит код функции set_url_scheme():

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 ( str_starts_with( $url, '//' ) ) {
        $url = 'http:' . $url;
    }

    if ( 'relative' === $scheme ) {
        $url = ltrim( preg_replace( '#^w+://[^/]*#', '', $url ) );
        if ( '' !== $url && '/' === $url[0] ) {
            $url = '/' . ltrim( $url, "/ tnrx0B" );
        }
    } else {
        $url = preg_replace( '#^w+://#', $scheme . '://', $url );
    }

    return apply_filters( 'set_url_scheme', $url, $scheme, $orig_scheme );
}

Как работает функция?

  1. ��роверка схемы: Если схема не задана, функция определяет, используется ли HTTPS. Если да — устанавливает схему как 'https', в противном случае — 'http'.
  2. Обработка URL: В зависимости от заданной схемы, функция обрабатывает URL и возвращает его в требуемом формате.
  3. Фильтрация результата: Функция применяет фильтры, чтобы другие плагины или темы могли модифицировать конечный результат.

Заключение

Функция set_url_scheme() в WordPress — это мощный инструмент для работы с URL. Понимание её работы поможет вам лучше управлять ссылками на вашем сайте и гарантировать, что они работают корректно при использовании различных протоколов.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *