Come posso incorporare i video di YouTube con https anziché http nell'URL?


8

Sto gestendo un sito che comunica solo su SSL / https, quindi se incorporo un video di YouTube usando http riceverò un messaggio di errore che dice che il sito non è completamente sicuro. È possibile riscrivere qualcosa in modo che WordPress accetti https e incorpori automaticamente i collegamenti di YouTube aggiunti all'area del contenuto? Perché ora, quando provo a incorporare un link https per YouTube, tutto ciò che viene mostrato è l'URL, nessun film.

Aggiornare

Ho provato ad aggiungere provider usando questo codice in Functions.php ma non fa nulla:

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, è nel Trac di Wordpress: core.trac.wordpress.org/ticket/18719
Richard B

Sembra esserci un modo per aggirare questo problema, ma non so esattamente come implementare questa soluzione in WordPress, vorrei un aiuto: groups.google.com/group/youtube-api-gdata/browse_thread/thread/…
Richard B

Risposte:


5

http://core.trac.wordpress.org/ticket/18719 ora ha una patch funzionante.

Modifica: il codice del plugin per fare simile fino a quando la patch non arriva:

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

Sì, ho anche commentato quel biglietto trac. Grazie!
Richard B,

7

La soluzione di Otto non funziona in WP 3.6, presumibilmente perché gli oembed sono cambiati nel core e ora corrispondono a https: //, quindi i provider aggiunti non vengono mai abbinati. Sebbene https: // corrisponda ora al core, fornisce sempre un http: // embed anche se l'URL originale è https: //, quindi qui abbiamo ancora lo stesso problema.

Ho deciso di convertire solo tutti i protocolli oembeds:

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

1
Alla ricerca di una soluzione temporanea per questo bug fino a quando non viene risolto nel core, questo era l'unico funzionante. Grazie! Non ho mai fatto funzionare le wp_oembed_add_provider()varianti, per esempio.
Markus Amalthea Magnuson,

È il 2015, questo bug non sembra essere ancora risolto ??
Bart

2

potresti hackerare un ritorno https forzato nel file Functions.php per cercare iframe che hanno un src che inizia con http e sostituiscono https. [Ho lasciato il 'be' di questi URL poiché alcuni degli URL di condivisione sono youtu.be e 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);

Grazie - puoi anche cambiare su http: // in // solo per seguire lo schema del sito di hosting. Nota perché WP non lo fa di default (dove l'host supporta entrambi i protocolli)
Adam

1

Youtube supporta gli URL https per i video (basta aggiungere la "s" all'URL normale). Tuttavia, affermano anche che:

In particolare, solo il codice giocatore di YouTube è accessibile tramite HTTPS in questo momento. L'attuale bitstream video e alcuni contenuti aggiuntivi caricati dal lettore YouTube possono ancora essere accessibili tramite connessioni HTTP standard quando si utilizza un URL HTTPS nel codice di incorporamento.

Quindi sembra che non sarai ancora in grado di ottenere feed video https. Ciò sembra essere confermato dal link trac che hai pubblicato: (Commento 7 di Otto42) "Fino a quando YouTube non restituisce risultati https nell'iframe, l'incorporamento di un tale link comporterebbe solo una pagina spezzata nella maggior parte dei browser, poiché l'iframe non è SSL ".

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

Puoi anche dare un'occhiata a questa soluzione: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Questo essenzialmente "servirebbe" il video come se fosse sulla tua pagina.)

(Non vedo nulla di più nuovo sull'argomento.)


Ma ciò non significa che l'iframe non possa essere https in modo che almeno il codice giocatore sia caricato in quel modo. La pagina che link dice che può. nel mio test inserendo un https src su iframe funziona bene su un sito https mentre un http src non viene visualizzato - ma anche se inserisco un collegamento https il [embed] ottengo un iframe con http.
Adam,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.