Есть ли способ использовать настраиваемый параметр для встраивания Vimeo без использования iframe?

Вопрос или проблема

Я пытаюсь добавить некоторые параметры oembed к моим клипам на Vimeo. Я пробовал сделать это, используя следующие две инструкции:

К сожалению, то, что работает для YouTube, не работает для Vimeo, так как возвращаемый URL не содержит строки ?feature=oembed, с которой я мог бы использовать str_replace. В конце URL-адреса только id видео, который является случайным. Я могу сделать это, если введу точный ID клипа, чтобы str_replace искал его.

Есть идеи, как сделать так, чтобы функция искала числа и прикрепляла параметры? Пример клипа будет

http://vimeo.com/14956293

и oEmbed должен быть

//player.vimeo.com/video/14956293?color=FFFFFF&title=0&byline=0. 

Как видно здесь, есть еще одно отличие от YouTube. Аргументы начинаются с ? и соединяются с помощью &. В то время как YouTube начинается с & и также соединяет аргументы с &.

Вы должны добавить фильтр на провайдера oembed для разрешения пользовательских параметров:

add_filter( 'oembed_fetch_url', 'my_oembed_fetch_url', 10, 3 );

function my_oembed_fetch_url( $provider, $url, $args ) {
    // Вы можете найти список стандартных провайдеров в WP_oEmbed::__construct()
    if ( strpos( $provider, 'vimeo.com' ) !== false) {
        // Полный список аргументов здесь: https://developer.vimeo.com/apis/oembed
        if ( isset( $args['autoplay'] ) ) {
            $provider = add_query_arg( 'autoplay', absint( $args['autoplay'] ), $provider );
        }
        if ( isset( $args['color'] ) && preg_match( '/^[a-f0-9]{6}$/i', $args['color'] ) ) {
            $provider = add_query_arg( 'color', $args['color'], $provider );
        }
        if ( isset( $args['portrait'] ) ) {
            $provider = add_query_arg( 'portrait', absint( $args['portrait'] ), $provider );
        }
        if ( isset( $args['title'] ) ) {
            $provider = add_query_arg( 'title', absint( $args['title'] ), $provider );
        }
        if ( isset( $args['byline'] ) ) {
            $provider = add_query_arg( 'byline', absint( $args['byline'] ), $provider );
        }
    }

    return $provider;
}

затем, в вашем шаблоне:

<?php wp_oembed_get('http://vimeo.com/44633289', array('color' => '7AB800')); ?>

или через шорткод в содержании поста:

[vimeo 44633289 color=7AB800]

и вы можете сделать то же самое для YouTube и всех остальных провайдеров oembed (если ваш my_oembed_fetch_url позволяет это)

.

Ответ или решение

Чтобы использовать пользовательские параметры для встраивания Vimeo видео без использования