Primero, al crear la página, almacena su ID en una opción para que puedas recuperarlo más tarde:
add_option('undeletable_page_id', $the_page_id, '', 'no'); // 'no' para que esta opción no se cargue en cada página
Luego, engancha en las acciones de eliminación con funciones para evitar la eliminación:
add_action('deleted_post', 'prevent_undeletable_page_deletion'); add_action('trashed_post', 'prevent_undeletable_page_trash');
En esas funciones, verifica el ID de la página que se está borrando y compáralo con el ID que almacenaste cuando creaste la página:
if($id == get_option('undeletable_page_id')) { // ... }
En la función prevent_undeletable_page_trash, cambia el estado de la página a ‘publish’. En la función prevent_undeletable_page_deletion, vuelve a crear la página.
Aquí tienes un ejemplo de cómo se podría implementar:
function prevent_undeletable_page_trash($id) { if ($id == get_option('undeletable_page_id')) { // Cambia el estado de la página a 'publish' para evitar que sea enviada a la papelera wp_update_post(array('ID' => $id, 'post_status' => 'publish')); } } function prevent_undeletable_page_deletion($id) { if ($id == get_option('undeletable_page_id')) { // Recrea la página para evitar su eliminación $page_data = array( 'ID' => $id, 'post_status' => 'publish', ); wp_insert_post($page_data); } } add_action('trashed_post', 'prevent_undeletable_page_trash'); add_action('deleted_post', 'prevent_undeletable_page_deletion');
Esta es la forma en que lo hice y funcionó para mí. Me encantaría saber cómo otros han abordado este problema.