Làm cách nào để nhúng video youtube bằng https thay vì http trong URL?


8

Tôi đang chạy một trang web chỉ giao tiếp qua SSL / https vì vậy nếu tôi nhúng video youtube bằng http, tôi sẽ nhận được thông báo lỗi cho biết trang web đó không hoàn toàn an toàn. Có thể viết lại một cái gì đó để WordPress chấp nhận https và vẫn tự động nhúng các liên kết youtube được thêm vào khu vực nội dung không? Vì bây giờ, khi tôi cố gắng nhúng một liên kết youtube https, tất cả những gì được hiển thị là URL, không có phim.

Cập nhật

Tôi đã cố gắng thêm các nhà cung cấp sử dụng mã này trong hàm.php nhưng không có gì:

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, đó là trong Wordpress Trac: core.trac.wordpress.org/ticket/18719
Richard B

Dường như có một cách xung quanh nó nhưng tôi không biết chính xác cách triển khai giải pháp này trong WordPress, muốn có một số trợ giúp: Groups.google.com.vn/group/youtube-api-gdata/browse_thread/thread/ trộm
Richard B

Câu trả lời:


5

http://core.trac.wordpress.org/ticket/18719 hiện có bản vá hoạt động.

Chỉnh sửa: Mã plugin để làm tương tự cho đến khi bản vá được đưa vào:

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

Vâng, tôi đã nhận xét trong vé trac là tốt. Cảm ơn!
Richard B

7

Giải pháp của Otto không hoạt động trong WP 3.6, có lẽ là do các thay đổi đã thay đổi trong lõi và bây giờ khớp với https: //, vì vậy các nhà cung cấp đã thêm không bao giờ bị khớp. Mặc dù https: // khớp trong lõi ngay bây giờ, nhưng nó luôn cung cấp http: // nhúng ngay cả khi URL gốc là https: //, vì vậy chúng tôi vẫn gặp vấn đề tương tự ở đây.

Tôi đã quyết định chỉ chuyển đổi tất cả các giao thức liên quan đến giao thức:

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

1
Tìm kiếm một số giải pháp tạm thời cho lỗi này cho đến khi nó được sửa trong lõi, đây là giải pháp duy nhất hoạt động. Cảm ơn! Không bao giờ có các wp_oembed_add_provider()biến thể để làm việc, ví dụ.
Markus Amalthea Magnuson

Đó là năm 2015, lỗi này dường như chưa được khắc phục ??
bart

2

bạn có thể hack một trả về https bắt buộc trong tệp tin.php để tìm kiếm iframe có src bắt đầu bằng http và thay thế https. [Tôi đã bỏ đi 'be' của các url này vì một số url chia sẻ là youtu.be và 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);

Cảm ơn - bạn cũng có thể thay đổi hoàn toàn http: // thành // để theo lược đồ của trang web lưu trữ. Lưu ý rằng tại sao WP không làm điều này theo mặc định (nơi máy chủ hỗ trợ cả hai giao thức)
Adam

1

Youtube hỗ trợ các url https cho video (chỉ cần thêm "s" vào url thông thường). Tuy nhiên, họ cũng nói rằng:

Đặc biệt, chỉ có mã trình phát YouTube có thể truy cập qua HTTPS tại thời điểm này. Dòng bit video thực tế và một số nội dung bổ sung được trình phát YouTube tải vẫn có thể được truy cập thông qua các kết nối HTTP tiêu chuẩn khi bạn sử dụng URL HTTPS trong mã nhúng của mình.

Vì vậy, có vẻ như bạn sẽ không thể nhận nguồn cấp dữ liệu video https. Điều này dường như được xác nhận bởi liên kết trac mà bạn đã đăng: (Nhận xét 7 của Otto42) "Cho đến khi YouTube trả về kết quả https trong iframe, việc nhúng một liên kết như vậy sẽ dẫn đến một trang bị hỏng trong hầu hết các trình duyệt, vì iframe không phải là SSL . "

Tham khảo: http://apiblog.youtube.com/2011/02/https-support-for-youtube-embeds.html

Bạn cũng có thể kiểm tra giải pháp này: http://www.adammershon.com/display-youtube-ideo-on-ssl-page/ (Điều này về cơ bản sẽ "phục vụ" video như thể nó trên trang của bạn.)

(Tôi không thấy bất cứ điều gì mới hơn về chủ đề này.)


Nhưng điều đó không có nghĩa là iframe không thể là https để ít nhất mã người chơi được tải theo cách đó. Trang bạn liên kết nói nó có thể. trong thử nghiệm của tôi, việc đặt https src trên iframe hoạt động tốt trên trang web https trong khi http src không hiển thị - nhưng ngay cả khi tôi đặt liên kết https, [nhúng] tôi vẫn nhận được iframe với http.
Adam
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.