Khi sử dụng nền tảng WordPress làm website cho công ty, mình hay gặp vấn đề phiền phức là các bài viết, các page hoặc contact form, users, … thường bị mất mà không biết ai xóa, thường người dùng không để ý thì họ cũng không biết là họ đã xóa hoặc lở tay xóa nhầm, có nhiều người sẽ vào admin để chỉnh sửa, thêm bớt nội dung. Vì vậy mình đã tìm cách vô hiệu hóa chức năng xóa bài viết, xóa trang, contact form, HTML Block, table, user người dùng, các đơn hàng. Để bảo đảm các nội dung sẽ không bị mất.

Bạn thêm function và file function của theme:

add_filter ('user_has_cap', 'prevent_default_theme_deletion', 10, 3);
function prevent_default_theme_deletion($allcaps, $caps, $args) {
    // print_r($allcaps); exit;
    $array = array(
        'delete_page', 
        'delete_others_page',
        'delete_published_page',
        'delete_private_page',
        'delete_post',
        'delete_others_post',
        'delete_published_post',
        'delete_private_post',
        'delete_user',
        'delete_plugin',
        'delete_role'
    );
    if ( isset( $args[0]) && ( in_array($args[0], $array ))) {
        $allcaps[ $caps[0] ] = false;
    }
    return $allcaps;
}

Vô hiệu hóa một bài viết nào đó

add_filter ('user_has_cap', 'prevent_default_theme_deletion', 10, 3);
function prevent_default_theme_deletion($allcaps, $caps, $args) {
    $post_id = 123;
    if ( isset( $args[0] ) && isset( $args[2] ) && $args[2] == $post_id && $args[0] == 'delete_post' ) {
        $allcaps[ $caps[0] ] = false;
    }
    return $allcaps;
}

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *