Cum să încorporez videoclipuri YouTube cu https în loc de http în URL?
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);

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

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.

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

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

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ă.)

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.
