web-dev-qa-db-fra.com

Une manière d'utiliser un paramètre personnalisé pour youtube embarquer sans utiliser un iframe?

Je ne souhaite pas afficher les titres des vidéos que j'intègre sur mon site wordpress. Pour ce faire, j'ai utilisé le lien incorporé, inséré l'iframe dans la publication wordpress et ajouté le paramètre personnalisé "showinfo = 0" à la fin de l'URL. Cela a bien fonctionné, jusqu'à ce que je décide de modifier la conception de mon site. J'ai dû utiliser un css personnalisé pour modifier toutes les vidéos (près de 200) que j'ai faites afin de s'adapter au nouveau design. Si j'avais su qu'il était juste de déposer le lien dans WordPress (comme le font la plupart des gens), je n'aurais pas eu à utiliser un iframe et WordPress aurait ajusté la taille de la vidéo en fonction du paramètre entré dans la section médias .

J'espère qu'il existe un meilleur moyen d'intégrer une vidéo Youtube que ce que je faisais auparavant (ce serait bien de laisser tomber le lien dans WordPress au lieu de devoir passer par autant d'étapes différentes afin d'obtenir le Quelqu'un a-t-il une idée de la façon de le faire (si cela est même possible)?

Je poste une vidéo tous les jours, ce qui aiderait vraiment mon processus s'il y avait un moyen de le faire. Merci.

`

<?php
load_theme_textdomain('standardtheme', get_template_directory() . '/lang');
$locale = get_locale();
$locale_file = get_template_directory() . '/languages/$locale.php';
if(is_readable($locale_file)):
    require_once($locale_file);
endif;
add_theme_support('post-thumbnails');
require_once('admin/functions.php');
require_once('lib/standardtheme.php');
require_once('lib/pro-photo/pro-photo.php');

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id['v'])) {
        return '<iframe width="'.$args['width'].'" height="'.$args['height'].'" src="http://www.youtube.com/embed/'.$id['v'].'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
    }
    return $html;
}
add_filter('oembed_result','Oembed_youtube_no_title',10,3);

?>
1
Rick Smith

Pas besoin de plugin, vous pouvez simplement utiliser le hook de filtre oembed_result de la classe Oembed

comme ça:

function Oembed_youtube_no_title($html,$url,$args){
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);
    if (isset($id['v'])) {
        return '<iframe width="'.$args['width'].'" height="'.$args['height'].'" src="http://www.youtube.com/embed/'.$id['v'].'?rel=0&showinfo=0" frameborder="0" allowfullscreen></iframe>';
    }
    return $html;
}
add_filter('oembed_result','Oembed_youtube_no_title',10,3);

il suffit donc de coller ce code dans le fichier functions.php de votre thème, de configurer la largeur et la hauteur dans le panneau des paramètres >> média, et vous devriez pouvoir simplement coller l’url de la vidéo youtube dans le message.

5
Bainternet

Excellente solution Bainternet,

En guise d’ajout rapide, il peut être judicieux de vérifier au préalable que l’intégration est une intégration YouTube avant de remplacer ces valeurs afin de ne pas casser d’autres types d’intégration. Il est également pratique d’utiliser le modèle WordPress pour analyser des arguments avec des valeurs par défaut. En fonction de ces deux ajouts, voici une fonction modifiée (où "espace de nom" est votre espace de nom:

/**
 * Add Custom Parameters to YouTube Embeds
 */
function namespace_oembed_youtube_no_title( $html, $url, $args ) {

    // Only run this for YouTube embeds
    if ( !strstr($url, 'youtube.com') )
        return $html;

    // Get embed URL
    $url_string = parse_url($url, PHP_URL_QUERY);
    parse_str($url_string, $id);

    // Set default arguments
    $defaults = array(
        'width' => 480,
        'height' => 385,
        'showinfo' => true,
        'rel' => true
    );

    // Merge args with defaults
    $args = wp_parse_args( $args, $defaults );

    // Define variables
    extract( $args, EXTR_SKIP );

    // Add custom parameter values to IFRAME
    if ( isset($id['v']) ) {
        return '<iframe width="' . intval($width) . '" height="' . intval($height) . '" src="http://www.youtube.com/embed/' . $id['v'] . '?rel=' . intval($rel) . '&showinfo=' . intval($showinfo) . '" frameborder="0" allowfullscreen></iframe>';
    }

    return $html;
}
add_filter('oembed_result', 'namespace_oembed_youtube_no_title', 10, 3);

Et maintenant, pour l'appel wp_oembed_get():

// oEmbed Video
$video = wp_oembed_get('http://www.youtube.com/watch?v=mx4xeO3Xq7g', array(
    'width' => 632,
    'height' => 474,
    'showinfo' => false,
    'rel' => false
) );

Merci encore d’avoir ajouté cette solution, le message original a résolu un problème pour moi et a été vraiment utile.

2
Kevin Leary

Il suffit de saisir l'URL, d'ajouter votre chaîne de requête et de laisser le support oEmbed intégré de WordPress le gérer.

C’est-à-dire: extrayez l’URL du code intégré iframe, puis ajoutez &showinfo=0 à la fin. Collez le résultat dans le contenu du message sur sa propre ligne et le tour est joué : WordPress incorporera la vidéo correctement, sans titre.

Voici un exemple de travail: http://www.youtube.com/v/GrfGGzRNC4U?version=3&hl=fr_FR&showinfo=0

J'ai tiré cette URL de incorporer le code , et non l'URL raccourcie.

0
Chip Bennett