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.

por Dan Iel

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *