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 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:

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!

4.9/5 - (76 votes)

Nếu bạn thấy bài viết có ích bạn có thể chia sẻ bài viết này. Yêu cầu thêm bài viết tại đây
Đã copy
vutruso

Vũ Trụ Số chuyên cung cấp hosting cho WordPress, dịch vụ thiết kế website, quản trị website cho doanh nghiệp, các dịch vụ bảo mật website WordPress, tăng tốc website WordPress

Bài viết liên quan