Xác nhận trước khi xoá chuyên mục, danh mục, taxonomy WordPress
Mặc định WordPress không có bất kỳ cảnh báo nào khi bạn xóa categories, tags hay bất kỳ taxonomy terms nào.
Chỉ cần một cú click nhầm hoặc vô tình, toàn bộ dữ liệu phân loại có thể biến mất ngay lập tức – và không có cách nào hoàn tác
Điều này đặc biệt nguy hiểm khi:
- Xóa nhầm taxonomy quan trọng đã gắn với hàng trăm bài viết
- Bulk delete không cẩn thận khi đang dọn dẹp dữ liệu
- Nhiều người cùng quản trị website, dễ nhầm lẫn
- Taxonomy custom chứa cấu trúc dữ liệu phức tạp không thể tái tạo dễ dàng như custom field
Một confirmation dialog đơn giản có thể cứu bạn khỏi thảm họa mất dữ liệu và tiết kiệm hàng giờ đồng hồ phục hồi.
Code xác nhận trước khi xoá chuyên mục, danh mục, taxonomy WordPress
Để giải quyết vấn đề này bạn chỉ cần thêm code dưới đây vào file functions.php là xong, nếu bạn chưa biết file functions.php là gì có thể đọc bài viết này nhé. Hoặc bạn cũng có thể thêm vào code snippet plugin vẫn được.
Nếu có thắc mắc hoặc khó khăn vui lòng kết bạn với chúng tôi qua zalo để được ultraview hỗ trợ.
/**
* Thêm confirmation khi xóa taxonomy terms
*/
function add_taxonomy_delete_confirmation() {
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
// Confirmation cho delete link (xóa đơn lẻ)
$('.row-actions .delete a, .delete a').on('click', function(e) {
if (!confirm('⚠️ Bạn có chắc chắn muốn xóa mục này không?\n\nHành động này không thể hoàn tác!')) {
e.preventDefault();
return false;
}
});
// Confirmation cho bulk delete (xóa hàng loạt)
$('#doaction, #doaction2').on('click', function(e) {
var action = $(this).siblings('select').val();
if (action === 'delete') {
var checkedItems = $('input[name="delete_tags[]"]:checked').length;
if (checkedItems > 0) {
if (!confirm('⚠️ Bạn có chắc chắn muốn xóa ' + checkedItems + ' mục đã chọn?\n\nHành động này không thể hoàn tác!')) {
e.preventDefault();
return false;
}
}
}
});
});
</script>
<?php
}
add_action('admin_footer-edit-tags.php', 'add_taxonomy_delete_confirmation');
add_action('admin_footer-term.php', 'add_taxonomy_delete_confirmation');
- Delete đơn lẻ: Bắt sự kiện click vào link “Delete” ở mỗi term
- Bulk delete: Bắt sự kiện khi chọn “Delete” trong dropdown và click Apply
- Hook vào admin_footer-edit-tags.php để áp dụng cho tất cả taxonomy screens
Nếu muốn chỉ áp dụng cho taxonomy cụ thể, ví dụ chỉ category và tags:
Bài viết liên quan
function add_taxonomy_delete_confirmation() {
$screen = get_current_screen();
// Chỉ áp dụng cho category và post_tag
if (!in_array($screen->taxonomy, ['category', 'post_tag'])) {
return;
}
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('.row-actions .delete a, .delete a').on('click', function(e) {
if (!confirm('⚠️ Bạn có chắc chắn muốn xóa mục này không?\n\nHành động này không thể hoàn tác!')) {
e.preventDefault();
return false;
}
});
$('#doaction, #doaction2').on('click', function(e) {
var action = $(this).siblings('select').val();
if (action === 'delete') {
var checkedItems = $('input[name="delete_tags[]"]:checked').length;
if (checkedItems > 0) {
if (!confirm('⚠️ Bạn có chắc chắn muốn xóa ' + checkedItems + ' mục đã chọn?\n\nHành động này không thể hoàn tác!')) {
e.preventDefault();
return false;
}
}
}
});
});
</script>
<?php
}
add_action('admin_footer-edit-tags.php', 'add_taxonomy_delete_confirmation');
Kết luận
Confirmation dialog khi xóa taxonomy là một biện pháp bảo vệ cơ bản mà mọi WordPress site nên có. Với chỉ vài dòng code đơn giản, bạn đã:
✅ Ngăn chặn xóa nhầm dữ liệu do vô ý hoặc thiếu tập trung
✅ Bảo vệ cấu trúc phân loại đã xây dựng công phu
✅ Giảm rủi ro khi có nhiều người cùng quản trị
✅ Tiết kiệm thời gian không phải phục hồi dữ liệu từ backup
Code này đặc biệt quan trọng với:
- Website thương mại điện tử (product categories không thể mất)
- Blog lớn với hệ thống phân loại phức tạp
- Site đa quản trị viên dễ nhầm lẫn
- Taxonomy custom chứa business logic quan trọng
Lời khuyên thêm: Kết hợp với hệ thống backup tự động để có lớp bảo vệ kép. Dù có confirmation, luôn có backup là cách an toàn nhất!