web-dev-qa-db-fra.com

Comment intégrer des vidéos youtube avec https au lieu de http dans l'URL?

J'utilise un site qui ne communique que via SSL/https. Par conséquent, si j'intègre une vidéo youtube via http, un message d'erreur indiquant que le site n'est pas entièrement sécurisé s'affiche. Est-il possible de réécrire quelque chose pour que WordPress accepte https tout en intégrant automatiquement les liens youtube ajoutés à la zone de contenu? Parce que maintenant, lorsque j'essaie d'intégrer un lien YouTube https, tout ce qui est affiché est l'URL, pas de film.

Mettre à jour

J'ai essayé d'ajouter des fournisseurs utilisant ce code dans functions.php mais cela ne fait rien:

wp_oembed_add_provider('https://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
wp_oembed_add_provider('http://youtu.be/*', 'https://youtube.com/oembed' );
wp_oembed_add_provider('#http://(www\.)?youtube.com/watch.*#i', 'https://youtube.com/oembed', true);
8
Richard B

http://core.trac.wordpress.org/ticket/18719 a un correctif fonctionnel.

Edit: Code du plugin pour faire la même chose jusqu'à ce que le correctif arrive

wp_oembed_add_provider('#https://(www\.)?youtube.com/watch.*#i', 'http://youtube.com/oembed?scheme=https', true);
wp_oembed_add_provider('https://youtu.be/*', 'http://youtube.com/oembed?scheme=https', false );
5
Otto

La solution d'Otto ne fonctionne pas dans WP 3.6, vraisemblablement parce que les modifications de la version ont changé et que celles-ci correspondent maintenant à https: //, de sorte que les fournisseurs ajoutés ne sont jamais appariés. Bien que https: // corresponde dans le noyau maintenant, il fournit toujours un http: // embed même si l'URL d'origine est https: //, nous avons donc le même problème ici.

J'ai décidé de convertir tous les protocoles oembeds relatifs:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
7
bradt

vous pouvez pirater un retour https forcé dans le fichier functions.php pour rechercher des iframes dont le src commence par http et remplacer https. [J'ai omis le 'be' de ces URL car certaines des urls de partage sont youtu.be et youtube.com]

//Embed Video Fix
function add_secure_video_options($html) {
   if (strpos($html, "<iframe" ) !== false) {
        $search = array('src="http://www.youtu','src="http://youtu');
        $replace = array('src="https://www.youtu','src="https://youtu');
        $html = str_replace($search, $replace, $html);

        return $html;
   } else {
        return $html;
   }
}
add_filter('the_content', 'add_secure_video_options', 10);
2
troutacular

Youtube prend en charge les URL https pour les vidéos (il suffit d'ajouter le "s" dans l'URL habituelle). Cependant, ils déclarent également que:

En particulier, seul le code du lecteur YouTube est actuellement accessible via HTTPS. Le flux vidéo réel et certains contenus supplémentaires chargés par le lecteur YouTube peuvent toujours être consultés via des connexions HTTP standard lorsque vous utilisez une URL HTTPS dans votre code incorporé.

Il semble donc que vous ne pourrez pas obtenir de flux vidéo https pour l'instant. Cela semble être confirmé par le lien de suivi que vous avez posté: (commentaire de Otto42) "Jusqu'à ce que YouTube renvoie https dans l'iframe, l'intégration d'un tel lien entraînerait simplement une page endommagée dans la plupart des navigateurs, car l'iframe n'est pas SSL. . "

Référence: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

Vous pouvez également consulter cette solution: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Ceci servirait essentiellement à "servir" la vidéo comme si elle se trouvait sur votre page .)

(Je ne vois rien de plus récent sur le sujet.)

1
jfacemyer