http-redirectwordpresspost-redirect-get

How to achieve Post-Redirect-Get in a Wordpress plugin's admin menu page?


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.

  1. The plugin itself cannot send an HTTP 301/302 because there are some contents already outputted by the Wordpress core.

  2. 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.

  3. Use JavaScript's window.location. But what if JavaScript is disabled in the user's browser?

Is there any other way to achieve redirection?


Solution

  • You could try doing your plugin's processing in the admin_init hook, which, I believe, is run before any content is output.