I am writing a Wordpress plugin, which adds an admin menu page. In the page is a form. When the form is submitted, the plugin writes to the database. But then I encounter a problem: whenever the user reloads the page, he/she is asked whether to send the POSTDATA again. If the user clicks yes, the plugin writes to the database again.
After some searching, I found a solution, the "Post-Redirect-Get" pattern. Then, later, I found that it's hard to implement this pattern into a Wordpress plugin.
The plugin itself cannot send an HTTP 301/302 because there are some contents already outputted by the Wordpress core.
It is possible to insert a meta tag (in order to issue a redirect) in the HTML head. But according to W3C, meta redirect is deprecated, so I think it's better not to use it.
Use JavaScript's window.location. But what if JavaScript is disabled in the user's browser?
Is there any other way to achieve redirection?
You could try doing your plugin's processing in the admin_init hook, which, I believe, is run before any content is output.