Để tạo chức năng ngăn chặn sao chép (no copy) và phát hiện DevTools, đồng thời hiển thị thông báo cảnh báo khi người dùng cố gắng thực hiện các hành vi này, bạn có thể sử dụng một đoạn mã JavaScript kết hợp CSS. Dưới đây là giải pháp hoàn chỉnh để thêm tính năng này vào website WordPress của bạn mà không dùng plugin.
Code chức năng chặn Copy và Dev Tools có hiển thị cảnh báo

Thêm đoạn mã này vào file functions.php của theme (hoặc theme con nếu bạn sử dụng child theme):
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 | function no_copy_and_devtools_script() { echo " <script> // Ngăn chặn chuột phải document.addEventListener('contextmenu', function(e) { e.preventDefault(); alert('Chuột phải đã bị vô hiệu hóa trên trang web này!'); }); // Ngăn chặn tổ hợp phím (Ctrl+C, Ctrl+X, Ctrl+U, Ctrl+S) document.addEventListener('keydown', function(e) { if (e.ctrlKey && (e.key === 'c' || e.key === 'x' || e.key === 'u' || e.key === 's')) { e.preventDefault(); alert('Tổ hợp phím này đã bị vô hiệu hóa!'); } // Ngăn Ctrl+Shift+I (mở DevTools) if (e.ctrlKey && e.shiftKey && e.key === 'I') { e.preventDefault(); alert('Developer Tools đã bị vô hiệu hóa trên trang web này!'); } // Ngăn F12 (mở DevTools) if (e.key === 'F12') { e.preventDefault(); alert('Developer Tools đã bị vô hiệu hóa trên trang web này!'); } }); // Phát hiện DevTools mở và hiển thị cảnh báo (function() { const devtools = { isOpen: false }; const threshold = 160; const emitEvent = (isOpen) => { if (isOpen && !devtools.isOpen) { devtools.isOpen = true; alert('Cảnh báo: Developer Tools đang mở. Hãy tắt DevTools để tiếp tục!'); } else if (!isOpen && devtools.isOpen) { devtools.isOpen = false; } }; const main = () => { const widthThreshold = window.outerWidth - window.innerWidth > threshold; const heightThreshold = window.outerHeight - window.innerHeight > threshold; if ((widthThreshold || heightThreshold) || (window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized)) { emitEvent(true); } else { emitEvent(false); } }; main(); window.addEventListener('resize', main); })(); </script> <style> /* Ngăn chọn văn bản */ body { -webkit-user-select: none; /* Chrome, Safari, Opera */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version */ } </style> "; } add_action('wp_head', 'no_copy_and_devtools_script'); |
Xem thêm: Code nút copy đoạn text vào clipboard cho website wordpress
Giải thích chức năng


- Ngăn chuột phải (
contextmenu):- Khi người dùng nhấp chuột phải, sự kiện sẽ bị hủy và hiển thị thông báo cảnh báo.
- Ngăn tổ hợp phím (
keydown):- Vô hiệu hóa các tổ hợp phím phổ biến:
Ctrl+C(sao chép).Ctrl+X(cắt).Ctrl+U(xem mã nguồn).Ctrl+S(lưu trang).Ctrl+Shift+I(mở DevTools).F12(mở DevTools).
- Vô hiệu hóa các tổ hợp phím phổ biến:
- Phát hiện DevTools:
- Kiểm tra các đặc điểm bất thường khi DevTools được mở (ví dụ: kích thước cửa sổ trình duyệt thay đổi).
- Hiển thị cảnh báo khi phát hiện DevTools đang hoạt động.
- CSS ngăn chọn văn bản:
- Vô hiệu hóa khả năng chọn và sao chép văn bản bằng CSS.
Code chức năng chặn Copy và Dev Tools có không cảnh báo
Thêm đoạn mã này vào file functions.php của theme (hoặc theme con nếu bạn sử dụng child theme):
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 | function no_copy_and_devtools_script_silent() { echo " <script> // Ngăn chặn chuột phải document.addEventListener('contextmenu', function(e) { e.preventDefault(); }); // Ngăn chặn tổ hợp phím (Ctrl+C, Ctrl+X, Ctrl+U, Ctrl+S) document.addEventListener('keydown', function(e) { if (e.ctrlKey && (e.key === 'c' || e.key === 'x' || e.key === 'u' || e.key === 's')) { e.preventDefault(); } // Ngăn Ctrl+Shift+I (mở DevTools) if (e.ctrlKey && e.shiftKey && e.key === 'I') { e.preventDefault(); } // Ngăn F12 (mở DevTools) if (e.key === 'F12') { e.preventDefault(); } }); // Phát hiện DevTools mở và thực hiện hành động (ẩn nội dung nếu cần) (function() { const devtools = { isOpen: false }; const threshold = 160; const emitEvent = (isOpen) => { if (isOpen && !devtools.isOpen) { devtools.isOpen = true; // Hành động tùy chọn khi DevTools mở (ẩn nội dung hoặc vô hiệu hóa) document.body.style.display = 'none'; // Ẩn toàn bộ nội dung } else if (!isOpen && devtools.isOpen) { devtools.isOpen = false; document.body.style.display = ''; // Hiển thị lại nội dung } }; const main = () => { const widthThreshold = window.outerWidth - window.innerWidth > threshold; const heightThreshold = window.outerHeight - window.innerHeight > threshold; if ((widthThreshold || heightThreshold) || (window.Firebug && window.Firebug.chrome && window.Firebug.chrome.isInitialized)) { emitEvent(true); } else { emitEvent(false); } }; main(); window.addEventListener('resize', main); })(); </script> <style> /* Ngăn chọn văn bản */ body { -webkit-user-select: none; /* Chrome, Safari, Opera */ -moz-user-select: none; /* Firefox */ -ms-user-select: none; /* Internet Explorer/Edge */ user-select: none; /* Non-prefixed version */ } </style> "; } add_action('wp_head', 'no_copy_and_devtools_script_silent'); |
Kiểm tra
- Truy cập website, thử nhấp chuột phải, chọn văn bản, hoặc sử dụng các tổ hợp phím (
Ctrl+C,F12, v.v.). - Mở Developer Tools để kiểm tra cảnh báo hiển thị.
Lưu ý
- Không thể ngăn chặn hoàn toàn DevTools: Người dùng nâng cao có thể vượt qua các rào cản này bằng cách tắt JavaScript hoặc sử dụng các công cụ khác.
- Không làm phiền trải nghiệm người dùng: Chỉ nên sử dụng tính năng này nếu thực sự cần thiết, vì nó có thể gây khó chịu cho người dùng hợp lệ.
