When I use the settings API in a multisite installation and the options page sits at the network level, posting the options to options.php
does not work, because the administration page sits at wp-admin/network
and WP expects the page to be at wp-admin
.
I added a function that checks whether this WP installation is a multsite installation (via the constant) and if it is, it changes the form’s action value to ../option.php
. This saves the options OK, but the default message “Settings saved.” is missing (however, the query string does include settings-updated=true
).
Any thoughts on how to get the message to appear?
For network option pages the correct form action URL is:
Then you have to register a callback:
In that callback function inspect the
$_POST
data, prepare the values, then save them:And then you have to create the redirect without further help:
On the options page check
$_GET['updated']
, and add an admin notice if you found that parameter.I’ve been using @toscho’s answer which works great, however in certain wordpress install paths the hard-coded form action URL won’t work. Here @birgire states how to build the correct URL: