[wp-hackers] Best way to kick off actual work from plugin settings page?
dougal at gunters.org
Mon Jul 12 15:06:11 UTC 2010
On Jul 12 2010 3:04 AM, Matt Jacob wrote:
> I'm using the settings API for my plugin's custom settings page, and
> it's working pretty well. Sometimes, though, I want to perform an
> action based on a submitted value instead of just saving the value
> back to the DB. Where's the best place to intercept the form
> submission and do some actual work?
> I have two possibilities in my mind:
> 1. Hook into the admin_init action, since this should come before the
> $_POST array gets wiped out. I can determine if a specific submit
> button was used, if a certain checkbox was checked, etc. and then do
> some work based on those criteria.
> 2. Use the validation callback in register_setting() to check the
> submitted fields for what I want, do some work, and then return only
> the options I actually want to be persistent. (I'm using a single
> array for all of my options, so it's easy to leave some options out.)
> Option #2 seems more elegant, but it's kind of overloading the purpose
> of the callback.
> Just for reference, the kind of "work" I'm talking about doing is
> regenerating a secret token or importing existing records to custom
> posts during an upgrade.
I've used both methods before. Which I choose seems to depend on context
and complexity of the tasks I'm performing. Quick, simple things can
often slip into the settings validation callback. For more complex
functions I might catch it on admin_init. Or sometimes I'll use a hybrid
method -- detection in the validation callback, setting a transient
flag, which I then look for later (perhaps for a cron schedule).
Dougal Campbell <dougal at gunters.org>
More information about the wp-hackers