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


8

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

Mise à 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);

1
Ok, c'est dans le Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B

Il semble y avoir un moyen de le contourner, mais je ne sais pas exactement comment implémenter cette solution dans WordPress, je voudrais de l'aide: groups.google.com/group/youtube-api-gdata/browse_thread/thread/…
Richard B

Réponses:


5

http://core.trac.wordpress.org/ticket/18719 a maintenant un correctif qui fonctionne.

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

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 );

Oui, j'ai également commenté ce ticket Trac. Merci!
Richard B

7

La solution d'Otto ne fonctionne pas dans WP 3.6, probablement parce que les oembeds ont changé de noyau et correspondent désormais à https: //, de sorte que les fournisseurs ajoutés ne sont jamais mis en correspondance. Bien que https: // corresponde maintenant dans le noyau, il fournit toujours une intégration http: // même si l'URL d'origine est https: //, nous avons donc toujours le même problème ici.

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

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

1
Vous cherchez une solution temporaire pour ce bug jusqu'à ce qu'il soit corrigé dans le noyau, c'était le seul qui fonctionnait. Merci! Je n'ai jamais réussi wp_oembed_add_provider()à faire fonctionner les variantes, par exemple.
Markus Amalthea Magnuson

Nous sommes en 2015, ce bug ne semble pas encore résolu ??
bart

2

vous pouvez pirater un retour https forcé dans le fichier functions.php pour rechercher des iframes qui ont un src commençant par http et remplacer https. [J'ai laissé de côté le "be" de ces URL car certaines des URL 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);

Merci - vous pouvez également changer complètement http: // en juste // pour suivre le schéma du site d'hébergement. Notez bien pourquoi WP ne le fait pas par défaut (où l'hôte prend en charge les deux protocoles)
Adam

1

Youtube prend en charge les URL https pour les vidéos (ajoutez simplement le "s" dans l'URL régulière). Cependant, ils déclarent également que:

En particulier, seul le code du lecteur YouTube est accessible via HTTPS pour le moment. Le flux vidéo réel et certains contenus supplémentaires chargés par le lecteur YouTube sont toujours accessibles via des connexions HTTP standard lorsque vous utilisez une URL HTTPS dans votre code d'intégration.

Il semble donc que vous ne puissiez pas encore obtenir de flux vidéo https. Cela semble être confirmé par le lien trac que vous avez publié: (Commentaire 7 par Otto42) "Jusqu'à ce que YouTube renvoie des résultats https dans l'iframe, l'intégration d'un tel lien entraînerait simplement une page cassé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/ (Cela "diffuserait" essentiellement la vidéo comme si elle se trouvait sur votre page.)

(Je ne vois rien de nouveau sur le sujet.)


Mais cela ne signifie pas que l'iframe ne peut pas être https afin qu'au moins le code du joueur soit chargé de cette façon. La page que vous liez indique que c'est possible. dans mes tests, mettre un https src sur l'iframe fonctionne bien sur un site https alors qu'un http src ne s'affiche pas - mais même si je mets un lien https, [embed] j'obtiens un iframe avec http.
Adam
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.