“create a plugin” isn’t really a separate option, you’d still need to intercept requests somehow. I’ve used the init
method, and it’s a viable option. Checking isset
on a POST
var before kicking off your processing logic is extremely fast, I doubt you could even reliably measure the impact in the sea of other things going on in the load process. The other option is admin-post.php
and the admin_post_(action)
hook. That method would require redirection after processing.