private function setupOptionsPage() { add_action('admin_init', function () { register_setting('metapic_options', 'metapic_options', function ($input) { $options = get_option('metapic_options'); $updateActions = array_flip(["submit", "login"]); $inArray = count(array_intersect_key($_POST, $updateActions)) > 0; $action = $inArray ? "update" : "deactivate"; switch ($action) { case "deactivate": $this->deactivateAccount(); $this->setStatusMessage(__("Account deactivated", "metapic")); break; default: $options = $this->updateOptions($options, $input); break; } return $options; }); register_setting('metapic_register_options', 'metapic_register_options', function ($input) { $user = $this->client->register($input["email_string"], $input["password_string"]); if ($user) { $this->activateAccount($user["id"], $user["email"], $user["access_token"]["access_token"]); $this->setStatusMessage(__("Account created", "metapic")); wp_safe_redirect(admin_url('options-general.php?page=metapic_settings')); exit; } else { $this->setStatusMessage(__("Account already exists", "metapic"), "error"); } return $input; }); }); add_action('admin_menu', function () { $isValidClient = get_site_option("mtpc_valid_client"); if (!is_multisite() || is_multisite() && $isValidClient) { add_options_page('Metapic', 'Metapic', 'manage_options', 'metapic_settings', function () { if (is_multisite()) { $this->getTemplate("metapic-options-ms"); } else { $this->getTemplate("metapic-options"); } }); if (!is_multisite()) { add_submenu_page(null, __('Register', 'metapic'), "Register", "manage_options", "metapic_register", function () { $this->getTemplate("register"); }); } } }); }