Prevent specific page delete from bulk action

Hi,

I’m using multisite and I trying to prevent specific page being deleted.

Here is prevent “move to trash” code:

function restrict_delete_page(){
$post_id = get_the_ID();
if($post_id == '231' || $post_id == '354' ||$post_id == '247' ||$post_id == '245' ||$post_id == '72'){
wp_redirect(get_admin_url().'edit.php?post_type=page');
exit;
}
}

add_action('wp_trash_post', 'restrict_delete_page', 10, 1);
add_action('before_delete_post', 'restrict_delete_page', 10, 1);

But it still can delete via bulk action and I don’t want to hide ‘trash’ in bulk action, so I trying to force post statue in data base.

function page_state_force(){
global $wpdb;
$blog_id = get_current_blog_id();
$current_id = 'wp_'.$blog_id.'_';
$current_id_post = $current_id."posts";
$get_page_state = $wpdb->get_results('SELECT * FROM '.$current_id_post.' WHERE id="231" ');
if(get_current_blog_id() > 1){
if($get_page_state[0]->post_status !== 'publish'){
$wpdb->query('UPDATE ' .$current_id_post. ' SET post_status ="publish",post_name = "shop" WHERE id="231"');
}
}
}

add_action('admin_init','page_state_force');

It’s not perfect solution because if user delete page via bulk action and they need to reload page this code will execute.

Could you please help me find better solution, thanks!