Добавление новых oEmbed провайдеров в WordPress с помощью WP_OEMBED_ADD_PROVIDER()

WP_OEMBED_ADD_PROVIDER() │ WP 2.9.0

Функция WP_OEMBED_ADD_PROVIDER() позволяет добавить пару формата URL и адреса oEmbed провайдера.

Основные моменты

  • Используется в: WP_oEmbed::_add_provider_early()
  • Хуки: Нет

Что возвращает

null — ничего (пустое значение).

Как использовать

Функция вызывается так:

wp_oembed_add_provider( $format, $provider, $regex );
  • $format (строка) — обязательный параметр. Формат URL, который может обрабатывать данный провайдер. Можно использовать звездочки (*) как подстановочные знаки.
  • $provider (строка) — обязательный параметр. URL самого oEmbed провайдера.
  • $regex (логическое значение) — указывает, является ли параметр $format регулярным выражением.
    • По умолчанию: false (нет).

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

Пример 1: Добавление провайдера

Предположим, нам нужно добавить поддержку oEmbed для сайта wizer.me, который является провайдером oEmbed. У нас есть следующие данные для работы:

  • Схемы URL:
    • http://*.wizer.me/learn/*
    • https://*.wizer.me/learn/*
    • http://*.wizer.me/preview/*
    • https://*.wizer.me/preview/*
  • Конечная точка API: http://app.wizer.me/api/oembed.{format}
  • Поддерживает открытие через теги <link>.

В коде это будет выглядеть так:

// Добавляем провайдер для wizer.me
add_action( 'init', 'wizerme_oembed_provider' );

function wizerme_oembed_provider() {
    wp_oembed_add_provider( 'http://*.wizer.me/learn/*', 'http://app.wizer.me/api/oembed.{format}', false );
    wp_oembed_add_provider( 'https://*.wizer.me/learn/*', 'http://app.wizer.me/api/oembed.{format}', false );
    wp_oembed_add_provider( 'http://*.wizer.me/preview/*', 'http://app.wizer.me/api/oembed.{format}', false );
    wp_oembed_add_provider( 'https://*.wizer.me/preview/*', 'http://app.wizer.me/api/oembed.{format}', false );
}

Теперь, когда вы вставляете ссылку, например, https://app.wizer.me/preview/1J09IV, она будет обработана и встроена в контент как iframe.

Пример 2: Использование регулярного выражения

В этом примере мы добавим провайдер для YouTube, используя регулярное выражение:

// Добавляем провайдер для YouTube
add_action( 'init', 'youtube_oembed_provider' );

function youtube_oembed_provider() {
    wp_oembed_add_provider( '#https?://youtu.be/.*#i', 'https://www.youtube.com/oembed', true );
}

Примечание: Это только демонстрация, на самом деле провайдер для YouTube уже зарегистрирован в WordPress.

Примечания

Изменения

  • С версии 2.9.0 — функция была введена.

Код WP_OEMBED_ADD_PROVIDER

Вот код реализации функции wp_oembed_add_provider в версии WordPress 6.7.2:

function wp_oembed_add_provider( $format, $provider, $regex = false ) {
    if ( did_action( 'plugins_loaded' ) ) {
        $oembed                       = _wp_oembed_get_object();
        $oembed->providers[ $format ] = array( $provider, $regex );
    } else {
        WP_oEmbed::_add_provider_early( $format, $provider, $regex );
    }
}

Теперь вы знаете, как использовать wp_oembed_add_provider для добавления новых oEmbed провайдеров в WordPress. Надеюсь, этот материал будет полезен для вас!

Leave a Reply

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