Bagaimana cara menyematkan video youtube dengan https alih-alih http di URL?

8

Saya menjalankan situs yang hanya berkomunikasi melalui SSL / https jadi jika saya menyematkan video youtube menggunakan http saya akan mendapatkan pesan kesalahan yang mengatakan situs ini tidak sepenuhnya aman. Apakah mungkin untuk menulis ulang sesuatu sehingga WordPress menerima https dan masih menyematkan tautan youtube yang ditambahkan ke area konten? Karena sekarang, ketika saya mencoba menyematkan tautan https youtube, semua yang ditampilkan adalah URL, tanpa film.

Memperbarui

Saya sudah mencoba menambahkan penyedia menggunakan kode ini di functions.php tetapi tidak apa-apa:

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
sumber
1
Oke, ada di Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B
Sepertinya ada jalan keluarnya, tetapi saya tidak tahu persis bagaimana menerapkan solusi ini di WordPress, perlu bantuan: groups.google.com/group/youtube-api-gdata/browse_thread/thread/…
Richard B

Jawaban:

5

http://core.trac.wordpress.org/ticket/18719 memiliki tambalan yang berfungsi sekarang.

Sunting: Kode plugin untuk melakukan hal yang sama sampai patch masuk:

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
sumber
Ya, saya sudah berkomentar di tiket trac itu juga. Terima kasih!
Richard B
7

Solusi Otto tidak berfungsi di WP 3.6, mungkin karena oembeds telah berubah pada intinya dan sekarang cocok dengan https: //, sehingga penyedia yang ditambahkan tidak pernah dicocokkan. Meskipun https: // cocok dengan inti sekarang, selalu memberikan http: // embed walaupun URL aslinya adalah https: //, jadi kami masih memiliki masalah yang sama di sini.

Saya telah memutuskan untuk hanya mengonversi semua protokol-relatif oembeds:

function my_embed_oembed_html( $html ) {
    return preg_replace( '@src="https?:@', 'src="', $html );
}
add_filter( 'embed_oembed_html', 'my_embed_oembed_html' );
bradt
sumber
1
Mencari beberapa solusi sementara untuk bug ini sampai diperbaiki pada intinya, ini adalah satu-satunya yang berfungsi. Terima kasih! wp_oembed_add_provider()Misalnya, tidak pernah ada varian yang berfungsi.
Markus Amalthea Magnuson
Ini tahun 2015, bug ini sepertinya belum diatasi ??
bart
2

Anda bisa meretas kembali https paksa di file functions.php untuk mencari iframe yang memiliki src dimulai dengan http dan ganti https. [Saya mengabaikan 'be' dari url ini karena beberapa url berbagi adalah youtu.be dan 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);
ikan trout spektakuler
sumber
Terima kasih - Anda juga bisa mengganti http: // menjadi hanya // untuk mengikuti skema situs hosting. Perhatikan yakin mengapa WP tidak melakukan ini secara default (di mana tuan rumah mendukung kedua protokol)
Adam
1

Youtube mendukung https url untuk video (cukup tambahkan "s" ke dalam url biasa). Namun, mereka juga menyatakan bahwa:

Khususnya, hanya kode pemutar YouTube yang dapat diakses melalui HTTPS saat ini. Bitstream video sebenarnya, dan beberapa konten tambahan yang dimuat oleh pemutar YouTube mungkin masih dapat diakses melalui koneksi HTTP standar saat Anda menggunakan URL HTTPS dalam kode sematan Anda.

Jadi sepertinya Anda tidak akan bisa mendapatkan https feed video dulu. Tampaknya ini dikonfirmasi oleh tautan trac yang Anda pasang: (Komentar 7 oleh Otto42) "Sampai YouTube mengembalikan hasil https di iframe, menyematkan tautan seperti itu hanya akan menghasilkan halaman yang rusak di sebagian besar browser, karena iframe bukan SSL . "

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

Anda juga dapat memeriksa solusi ini: http://www.adammershon.com/display-youtube-videos-on-ssl-page/ (Pada dasarnya ini akan "melayani" video seolah-olah itu ada di halaman Anda.)

(Saya tidak melihat sesuatu yang lebih baru tentang subjek ini.)

jfacemyer
sumber
Tetapi itu tidak berarti iframe tidak boleh https sehingga setidaknya kode pemain dimuat seperti itu. Halaman yang Anda tautkan mengatakan itu bisa. dalam pengujian saya menempatkan https src di iframe berfungsi dengan baik di situs https sedangkan http src tidak ditampilkan - tetapi bahkan jika saya meletakkan tautan https [embed] saya mendapatkan iframe dengan http.
Adam