Cum să încorporez videoclipuri YouTube cu https în loc de http în URL?

31 ian. 2012, 12:48:06
Vizualizări: 20.3K
Voturi: 8

Administrez un site care comunică doar prin SSL/https, așa că atunci când încerc să încorporez un videoclip YouTube folosind http primesc un mesaj de eroare care spune că site-ul nu este complet securizat. Este posibil să rescriu ceva astfel încât WordPress să accepte https și să încorporeze automat link-urile YouTube adăugate în zona de conținut? Pentru că acum, când încerc să încorporez un link YouTube cu https, tot ce se afișează este URL-ul, fără videoclip.

Actualizare

Am încercat să adaug furnizori folosind acest cod în functions.php dar nu face nimic:

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

Ok, este în Wordpress Trac: http://core.trac.wordpress.org/ticket/18719

Richard B Richard B
1 feb. 2012 12:01:20

Se pare că există o soluție, dar nu știu exact cum să implementez această soluție în WordPress, aș avea nevoie de ajutor: http://groups.google.com/group/youtube-api-gdata/browse_thread/thread/4bd15af99c3631af/b5876ac42863cc06?lnk=gst&q=oembed+https#b5876ac42863cc06

Richard B Richard B
1 feb. 2012 15:21:02
Toate răspunsurile la întrebare 4
2

Soluția lui Otto nu funcționează în WP 3.6, probabil deoarece oembeds-urile s-au schimbat în nucleu și acum se potrivesc cu https://, astfel încât furnizorii adăugați nu mai sunt potriviți. Deși https:// se potrivește acum în nucleu, acesta furnizează întotdeauna un embed http:// chiar dacă URL-ul original este https://, așa că încă avem aceeași problemă aici.

Am decis să convertesc toate oembeds-urile relativ la protocol:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
9 sept. 2013 23:08:50
Comentarii

Cautam o soluție temporară pentru acest bug până când va fi rezolvat în core, aceasta a fost singura care a funcționat. Mulțumesc! Niciodată nu am reușit să fac variantele cu wp_oembed_add_provider() să funcționeze, de exemplu.

Markus Amalthea Magnuson Markus Amalthea Magnuson
13 sept. 2013 21:56:31

Este 2015, se pare că acest bug încă nu a fost rezolvat??

bart bart
21 sept. 2015 06:16:10
1

http://core.trac.wordpress.org/ticket/18719 are acum un patch funcțional.

Editat: Cod de plugin pentru a face ceva similar până când patch-ul este integrat:

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);
2 feb. 2012 20:48:45
Comentarii

Da, am lăsat și eu un comentariu în acel ticket Trac. Mulțumesc!

Richard B Richard B
6 feb. 2012 22:07:11
1

ai putea implementa o forțare a returnării https în fișierul functions.php pentru a căsta iframe-uri care au un src care începe cu http și le înlocuiește cu https. [Am omis 'be' din aceste URL-uri deoarece unele dintre URL-urile de partajare sunt youtu.be și youtube.com]

//Corecție Embed Video
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);
23 oct. 2013 22:28:27
Comentarii

Mulțumesc - ai putea de asemenea să schimbi pur și simplu http:// în doar // pentru a urma schema site-ului gazdă. Nu sunt sigur de ce WP nu face asta implicit (acolo unde gazda suportă ambele protocoale)

Adam Adam
15 iun. 2014 23:26:42
1

YouTube acceptă URL-uri HTTPS pentru videoclipuri (doar adaugă „s” în URL-ul obișnuit). Totuși, ei menționează și că:

În special, doar codul playerului YouTube este accesibil prin HTTPS în acest moment. Fluxul real de video și unele conținuturi suplimentare încărcate de playerul YouTube pot fi accesate în continuare prin conexiuni HTTP standard atunci când utilizați un URL HTTPS în codul de încorporare.

Deci se pare că încă nu vei putea obține fluxuri video prin HTTPS. Acest lucru pare confirmat de legătura Trac pe care ai postat-o: (Comentariul 7 de Otto42) „Până când YouTube nu va returna rezultate HTTPS în iframe, încorporarea unui astfel de link ar duce doar la o pagină stricată în majoritatea browserelor, deoarece iframe-ul nu este SSL.”

Referință: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

De asemenea, poți verifica această soluție: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Aceasta ar „servi” videoclipul ca și cum ar fi pe pagina ta.)

(Nu văd nimic mai nou pe această temă.)

2 feb. 2012 18:50:45
Comentarii

Dar asta nu înseamnă că iframe-ul nu poate fi https, astfel încât măcar codul player-ului să fie încărcat în acest fel. Pagina pe care o menționezi spune că este posibil. În testele mele, punând un src https pe iframe funcționează corect pe un site https, în timp ce un src http nu se afișează - dar chiar dacă pun un link https, [embed] îmi returnează un iframe cu http.

Adam Adam
15 iun. 2014 23:29:05