Trong bài viết này, chúng tôi sẽ hướng dẫn cách tích hợp Plyr Video Player vào website WordPress thông qua mã PHP. Đây là một thư viện đa phương tiện mã nguồn mở, hỗ trợ phát video từ nhiều nền tảng như YouTube, Vimeo với giao diện hiện đại và tính năng mạnh mẽ. Hãy cùng tìm hiểu từng dòng mã và cách hoạt động của nó.
Demo:
1. Tải Plyr Scripts và Styles vào WordPress
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | function enqueue_plyr_scripts() { wp_enqueue_style('plyr-css', 'https://cdn.plyr.io/3.7.8/plyr.css'); wp_enqueue_script('plyr-js', 'https://cdn.plyr.io/3.7.8/plyr.polyfilled.js', array(), null, true); wp_add_inline_script('plyr-js', ' document.addEventListener("DOMContentLoaded", function () { if (typeof Plyr !== "undefined") { document.querySelectorAll(".plyr--video").forEach(function(element) { var encodedId = element.getAttribute("data-plyr-embed-id"); if (encodedId) { var decodedId = atob(encodedId); element.setAttribute("data-plyr-embed-id", decodedId); } }); Plyr.setup(".plyr"); } }); '); } add_action('wp_enqueue_scripts', 'enqueue_plyr_scripts'); |
Giải thích:
enqueue_plyr_scripts
: Đây là hàm dùng để nạp CSS và JS của Plyr từ CDN. Chúng ta sử dụngwp_enqueue_style
để thêm tệp CSS vàwp_enqueue_script
để nạp JavaScript.wp_add_inline_script
: Đoạn mã này sẽ được chạy sau khi Plyr được tải. Nó sẽ lắng nghe sự kiện DOMContentLoaded, sau đó giải mã video ID (mã hóa bằng Base64) và khởi tạo Plyr trên các phần tử video.
2. Chuyển Đổi Video YouTube Thành Player Plyr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | function convert_youtube_embed_to_plyr($html, $url, $attr, $post_id) { if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) { $video_id = preg_replace('/.*(?:youtube.com\/embed\/|youtu.be\/|youtube.com\/watch\?v=)([a-zA-Z0-9_-]+).*/', '$1', $url); $encoded_id = base64_encode($video_id); $plyr_html = ' <div class="plyr plyr--video" data-plyr-provider="youtube" data-plyr-embed-id="' . esc_attr($encoded_id) . '"> <div data-plyr-provider="youtube" data-plyr-embed-id="' . esc_attr($encoded_id) . '"></div> </div>'; return $plyr_html; } return $html; } add_filter('embed_oembed_html', 'convert_youtube_embed_to_plyr', 10, 4); |
convert_youtube_embed_to_plyr
: Hàm này dùng để thay thế mã nhúng (embed) video YouTube mặc định bằng giao diện của Plyr.preg_replace
: Đoạn mã này tách ID video YouTube từ URL.base64_encode
: ID video được mã hóa bằng Base64 nhằm mục đích bảo mật và sau đó được giải mã khi chạy Plyr.- Kết quả trả về là một đoạn HTML tương thích với Plyr.
3. Tùy Biến CSS Cho Plyr
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | function custom_plyr_css() { echo ' <style> .plyr--video iframe { pointer-events: none; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .plyr--video { position: relative; width: 100%; padding-top: 56.25%; } .plyr--video .plyr__video-wrapper { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style> '; } add_action('wp_head', 'custom_plyr_css'); |
Giải thích:
custom_plyr_css
: Đây là đoạn mã CSS tùy chỉnh được nạp trực tiếp vào phần<head>
của trang web..plyr--video
: Đảm bảo video được hiển thị với tỷ lệ 16:9 bằng cách dùngpadding-top: 56.25%
. Tất cả video sẽ được tối ưu hóa để khớp với kích thước màn hình.iframe
: Vô hiệu hóa tương tác với iframe video nhằm ngăn người dùng nhấp chuột phải.
4. Vô Hiệu Hóa Chuột Phải Trên Video
1 2 3 4 5 6 7 8 9 10 11 12 | function disable_right_click_script() { echo ' <script> document.addEventListener("contextmenu", function(e) { if (e.target.closest(".plyr--video")) { e.preventDefault(); } }); </script> '; } add_action('wp_footer', 'disable_right_click_script'); |
disable_right_click_script
: Đoạn mã JavaScript này chặn sự kiện nhấp chuột phải trên video Plyr, giúp ngăn người dùng tải xuống video hoặc thực hiện hành động không mong muốn.
Tổng Kết
- Plyr là một công cụ mạnh mẽ giúp cải thiện trải nghiệm xem video trên website của bạn.
- Bằng cách sử dụng đoạn mã trên, bạn có thể dễ dàng tích hợp Plyr vào WordPress, thay thế trình phát video mặc định và tùy chỉnh giao diện theo yêu cầu.
Để sử dụng đoạn mã này hiệu quả, hãy sao chép và dán mã vào file functions.php
của theme bạn đang dùng. Điều này sẽ giúp website của bạn có một trình phát video đẹp mắt và tối ưu hóa trải nghiệm người dùng. Mã hoàn chỉnh là:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | function enqueue_plyr_scripts() { // Plyr CSS wp_enqueue_style('plyr-css', 'https://cdn.plyr.io/3.7.8/plyr.css'); // Plyr JS wp_enqueue_script('plyr-js', 'https://cdn.plyr.io/3.7.8/plyr.polyfilled.js', array(), null, true); // Custom script to initialize Plyr with decoded video ID wp_add_inline_script('plyr-js', ' document.addEventListener("DOMContentLoaded", function () { if (typeof Plyr !== "undefined") { // Decode base64-encoded video IDs document.querySelectorAll(".plyr--video").forEach(function(element) { var encodedId = element.getAttribute("data-plyr-embed-id"); if (encodedId) { var decodedId = atob(encodedId); // Decode base64 element.setAttribute("data-plyr-embed-id", decodedId); } }); Plyr.setup(".plyr"); } }); '); } add_action('wp_enqueue_scripts', 'enqueue_plyr_scripts'); function convert_youtube_embed_to_plyr($html, $url, $attr, $post_id) { if (strpos($url, 'youtube.com') !== false || strpos($url, 'youtu.be') !== false) { // Extract video ID from URL $video_id = preg_replace('/.*(?:youtube.com\/embed\/|youtu.be\/|youtube.com\/watch\?v=)([a-zA-Z0-9_-]+).*/', '$1', $url); // Base64 encode video ID for obfuscation $encoded_id = base64_encode($video_id); // Plyr-compatible HTML $plyr_html = ' <div class="plyr plyr--video" data-plyr-provider="youtube" data-plyr-embed-id="' . esc_attr($encoded_id) . '"> <div data-plyr-provider="youtube" data-plyr-embed-id="' . esc_attr($encoded_id) . '"></div> </div>'; return $plyr_html; } return $html; } add_filter('embed_oembed_html', 'convert_youtube_embed_to_plyr', 10, 4); function custom_plyr_css() { echo ' <style> .plyr--video iframe { pointer-events: none; /* Disable interaction */ position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .plyr--video { position: relative; width: 100%; padding-top: 56.25%; /* 16:9 aspect ratio */ } .plyr--video .plyr__video-wrapper { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } </style> '; } add_action('wp_head', 'custom_plyr_css'); // Disable right-click on video function disable_right_click_script() { echo ' <script> document.addEventListener("contextmenu", function(e) { if (e.target.closest(".plyr--video")) { e.preventDefault(); } }); </script> '; } add_action('wp_footer', 'disable_right_click_script'); |
Chúc các bạn thành công.
- Quản Lý Thuộc Tính DoFollow và NoFollow cho Các Liên Kết trong Nội Dung và Bình Luận
- Mua Theme WordPress Chính Hãng Tại Muathemewp – Nhanh Chóng, Uy Tín
- Nên chọn thiết kế website ở K-TECH và NINA không? Lý do tại vì sao?
- Tổng hợp 30 mẫu css button mới nhất 2025 cho website
- Sharecode theme wordpress điện thoại, laptop thiết bị điện tử miễn phí