Full code to add settings page with checkbox option. You don’t need loops and something else. WordPress will make everything for you. Get more info in Codex
function wpse_319648_render_popup() {
$options = get_option('wpse_319648_checkbox');
$default = isset($options['popup']) ? $options['popup'] : 0;
printf(
'<input type="checkbox" name="%1$s[popup]" value="1" %2$s>',
'wpse_319648_checkbox',
checked($default, 1, false)
);
}
function wpse_319648_settings_page() {
echo '<form class="wrap" action="options.php" method="post">';
settings_fields('wpse-319648-settings');
do_settings_sections('wpse-319648-settings');
submit_button();
echo '</form>';
}
add_action('admin_init', function() {
register_setting('wpse-319648-settings', 'wpse_319648_checkbox');
add_settings_section(
'wpse-319648-section',
__('Settings', 'theme'),
[],
'wpse-319648-settings'
);
add_settings_field(
'popup',
__('Show popup', 'theme'),
'wpse_319648_render_popup',
'wpse-319648-settings',
'wpse-319648-section'
);
});
add_action('admin_menu', function() {
add_submenu_page('options-general.php',
__('Options', 'theme'),
__('Options', 'theme'),
'manage_options',
'my-page',
'wpse_319648_settings_page'
);
});
Hope it helps.