According to Codex, one sets up
page_options with options to be updated.
This does not pass the check in options.php line 48:
if( !isset( $whitelist_options[ $option_page ] ) )
wp_die( __( 'Error! Options page not found.' ) );
if( $option_page == 'options' ) {
if( is_site_admin() ) {
$options = explode(',', stripslashes( $_POST[ 'page_options' ] ));
} else {
die( 'Not admin' );
}
} else {
$options = $whitelist_options[ $option_page ];
}
As coded, page_options only applies to options.php, and $whitelist_options must contain any page name to be used.
Either the code needs to be repaired, or Codex documentation needs to be updated with four bits:
- Remove the section on page_options
- Revise the discussion of the nonce argument to say it should be called mypage-verb-options (eg. mypage==name of my plugin).
- Talk about a requirement to add a filter that augments $whitelist_options
- Talk about an input item needed, called option-page (to match the whitelist_options value and the nonce value without the -options suffix)
i.e.
echo "<input name='option_page' value='myplugin-update' />";
if (function_exists('wp_nonce_field')) wp_nonce_field('myplugin-update-options');
and code for the new whitelist_options filter