So having another look at this again today it occurred to me that it definitely must be an issue with settings_opts_page
. In the light of a new day the answer is obvious, clearly settings_fields
and do_settings_sections
are intended to echo their contents and this is breaking the page render and seeing the form and contents displaced.
public function settings_opts_page(){
echo '<div id="rifh-tester-setup"><form action="options.php" method="post">
' . settings_fields("rifh_tester_options") . do_settings_sections("rifh_tester") . '
<input name="submit" type="submit" value="Save Changes">
</form>
</div>';
}
Should be
public function settings_opts_page(){
echo '<div id="rifh-tester-setup"><form action="options.php" method="post">';
settings_fields("rifh_tester_options");
do_settings_sections("rifh_tester");
echo '<input name="submit" type="submit" value="Save Changes"></form></div>';
}