it-swarm.com.de

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

Ich verwende eine Website, die nur über SSL/https kommuniziert. Wenn ich also ein YouTube-Video über http einbinde, erhalte ich die Fehlermeldung, dass die Website nicht vollständig sicher ist. Ist es möglich, etwas umzuschreiben, sodass WordPress https akzeptiert und dennoch automatisch YouTube-Links einbettet, die zum Inhaltsbereich hinzugefügt wurden? Denn jetzt, wenn ich versuche, einen https-Youtube-Link einzubetten, wird nur die URL angezeigt, kein Film.

Update

Ich habe versucht, Provider hinzuzufügen, die diesen Code in functions.php verwenden, aber das macht 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);
8
Richard B

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

Bearbeiten: Plugin-Code, um Ähnliches zu tun, 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 );
5
Otto

Ottos Lösung 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 niemals übereinstimmen. Obwohl https: // jetzt in core übereinstimmt, wird immer ein http: // eingebettet, auch wenn die ursprüngliche URL https: // lautet, sodass wir hier immer noch das gleiche Problem haben.

Ich habe mich dazu entschlossen, alle oembeds protokollrelativ zu konvertieren:

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

sie könnten eine erzwungene https-Rückkehr in die Datei functions.php hacken, um nach iframes zu suchen, deren src mit http beginnt und https zu ersetzen. [Ich habe das 'Be' dieser URLs weggelassen, da einige der Share-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);
2
troutacular

Youtube unterstützt https-URLs für Videos (fügen Sie einfach das "s" in die reguläre URL ein). Sie geben jedoch auch an, dass:

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 werden, kann weiterhin über Standard-HTTP-Verbindungen zugegriffen werden, wenn Sie eine HTTPS-URL in Ihrem Einbettungscode verwenden.

Es sieht also so aus, als ob Sie https-Video-Feeds noch nicht erhalten können. 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, führt das Einbetten eines solchen Links in den meisten Browsern nur zu einer fehlerhaften Seite, da der Iframe nicht SSL ist . "

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

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

(Ich sehe nichts Neues zu diesem Thema.)

1
jfacemyer