There are two more possible ways
-
Use the browser’s history API to manipulate the URL displayed at the address bar/ history.
-
Use AJAX
Redirection is the best solution for 100% browser support and it is probably the easiest to implement. You don’t need to use any hook with that just do the processing without generating output and then redirect back to the page. Something like
if (isset($GET['posttodelete'])) {
delete post
wp_redirect(utl with 'posttodelete' stripped out of it);
} else
normal loop;
But your users might prefer the AJAX solution which requires much more coding but gives the best user experience.