Wie binde ich YouTube-Videos mit https anstelle von http in die URL ein?

8

Ich betreibe eine Site, die nur über SSL / https kommuniziert. Wenn ich also ein YouTube-Video über http einbette, wird eine Fehlermeldung angezeigt, dass die Site nicht vollständig sicher ist. Ist es möglich, etwas neu zu schreiben, sodass WordPress https akzeptiert und trotzdem automatisch YouTube-Links einbettet, die dem Inhaltsbereich hinzugefügt wurden? Denn jetzt, wenn ich versuche, einen https-Youtube-Link einzubetten, wird nur die URL angezeigt, kein Film.

Aktualisieren

Ich habe versucht, Anbieter hinzuzufügen, die diesen Code in functions.php verwenden, aber es tut nichts:

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);
Richard B.
quelle
1
Ok, es ist in der Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B
Es scheint einen Weg zu geben, aber ich weiß nicht genau, wie ich diese Lösung in WordPress implementieren soll. Ich hätte gerne Hilfe: groups.google.com/group/youtube-api-gdata/browse_thread/thread/…
Richard B.

Antworten:

5

http://core.trac.wordpress.org/ticket/18719 hat jetzt einen funktionierenden Patch.

Bearbeiten: Plugin-Code, um ähnliche Aktionen auszuführen, bis der Patch eingeht:

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 );
Otto
quelle
Ja, ich habe auch in diesem Trac-Ticket einen Kommentar abgegeben. Vielen Dank!
Richard B
7

Die Lösung von Otto funktioniert in WP 3.6 nicht, vermutlich weil sich die Oembeds im Kern geändert haben und jetzt mit https: // übereinstimmen, sodass die hinzugefügten Anbieter nie übereinstimmen. Obwohl https: // jetzt im Kern übereinstimmt, wird immer eine http: // -Einbettung bereitgestellt, auch wenn die ursprüngliche URL https: // lautet. Daher haben wir hier immer noch das gleiche Problem.

Ich habe beschlossen, nur alle protokollbezogenen Oembeds zu konvertieren:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
Bradt
quelle
1
Auf der Suche nach einer vorübergehenden Lösung für diesen Fehler, bis er im Kern behoben ist, war dies die einzige funktionierende. Vielen Dank! wp_oembed_add_provider()Zum Beispiel haben die Varianten nie funktioniert.
Markus Amalthea Magnuson
Es ist 2015, dieser Fehler scheint noch nicht behoben zu sein?
Bart
2

Sie könnten eine erzwungene https-Rückgabe in der Datei functions.php hacken, um nach Iframes zu suchen, deren src mit http beginnt, und https ersetzen. [Ich habe das 'Sein' dieser URLs weggelassen, da einige der Freigabe-URLs youtu.be und youtube.com sind.]

//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);
Forelle
quelle
Vielen Dank - Sie können http: // auch einfach in // ändern, um dem Schema der Hosting-Site zu folgen. Beachten Sie, warum WP dies nicht standardmäßig tut (wobei der Host beide Protokolle unterstützt)
Adam
1

Youtube unterstützt https-URLs für Videos (fügen Sie einfach das "s" zur regulären URL hinzu). Sie geben jedoch auch Folgendes an:

Insbesondere ist derzeit nur der YouTube-Player-Code über HTTPS verfügbar. Auf den eigentlichen Video-Bitstream und einige zusätzliche Inhalte, die vom YouTube-Player geladen wurden, kann weiterhin über Standard-HTTP-Verbindungen zugegriffen werden, wenn Sie eine HTTPS-URL in Ihrem Einbettungscode verwenden.

Es sieht also so aus, als könnten Sie noch keine https-Video-Feeds erhalten. Dies scheint durch den von Ihnen geposteten Trac-Link bestätigt zu werden: (Kommentar 7 von Otto42) "Bis YouTube https-Ergebnisse im Iframe zurückgibt, würde das Einbetten eines solchen Links in den meisten Browsern nur zu einer fehlerhaften Seite führen, da der Iframe nicht SSL ist . "

Referenz: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

Sie können sich auch diese Lösung ansehen : http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Dies würde das Video im Wesentlichen so "bedienen", als wäre es auf Ihrer Seite.)

(Ich sehe nichts Neueres zu diesem Thema.)

jfacemyer
quelle
Dies bedeutet jedoch nicht, dass der Iframe nicht https sein kann, sodass zumindest der Player-Code auf diese Weise geladen wird. Die Seite, die Sie verlinken, sagt, dass es möglich ist. In meinen Tests funktioniert das Einfügen eines https-src in den Iframe auf einer https-Site einwandfrei, während ein http-src nicht angezeigt wird. Aber selbst wenn ich einen https-Link auf [einbetten] setze, erhalte ich einen Iframe mit http.
Adam