web-dev-qa-db-fra.com

Une façon d'utiliser un paramètre personnalisé pour vimeo incorporer sans utiliser un iframe?

J'essaie d'obtenir certains paramètres associés à mes clips Vimeo. J'ai essayé de le faire en utilisant les deux instructions suivantes:

Malheureusement, ce qui fonctionne pour YouTube ne fonctionnera pas pour Vimeo, car l'URL renvoyée ne contient pas de chaîne telle que ?feature=oembed sur laquelle je peux faire fonctionner str_replace. C'est simplement l'id de la vidéo à la fin de l'URL, qui est aléatoire. Je peux le faire fonctionner si je saisis l'identifiant exact du clip pour que str_replace cherche.

Avez-vous une idée de la façon dont la fonction cherche des nombres et attache les paramètres? Un exemple de clip serait

http://vimeo.com/14956293

et le oEmbed devrait être

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

Comme vous pouvez le voir ici, YouTube présente une autre différence. Les arguments commencent par? et connecte les arguments avec &. Alors que YouTube commence par & et connecte également les arguments avec &.

2
jakob

Vous devriez ajouter un filtre sur le fournisseur oembed pour autoriser les paramètres de douane:

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

function my_oembed_fetch_url( $provider, $url, $args ) {
    // You can find the list of defaults providers in WP_oEmbed::__construct()
    if ( strpos( $provider, 'vimeo.com' ) !== false) {
        // Check the full list of args here: 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;
}

puis, dans votre modèle:

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

ou via un shortcode dans le contenu de l'article:

[vimeo 44633289 color=7AB800]

et vous pouvez faire la même chose pour youtube et tous les autres fournisseurs oembed (si votre my_oembed_fetch_url le permet)

1
mems