Skip to content

Instantly share code, notes, and snippets.

@Cauen
Last active August 31, 2019 23:37
Show Gist options
  • Save Cauen/763ada281c8d4f528984090d1d7819e8 to your computer and use it in GitHub Desktop.
Save Cauen/763ada281c8d4f528984090d1d7819e8 to your computer and use it in GitHub Desktop.
Ajax and no Ajax WP Options Page - Multiple DB Options
<?php
add_action('wp_ajax_save_i9_analytics_options', 'save_i9_analytics_options');
add_action('wp_ajax_nopriv_save_i9_analytics_options', 'save_i9_analytics_options');
function save_i9_analytics_options()
{
if (!empty($_POST)) {
$i9_heap_id = $_POST["i9_heap_id"];
$i9_mixpanel_id = $_POST['i9_mixpanel_id'];
$i9_amplitude_id = $_POST['i9_amplitude_id'];
update_option('i9_heap_id', $i9_heap_id);
update_option('i9_mixpanel_id', $i9_mixpanel_id);
update_option('i9_amplitude_id', $i9_amplitude_id);
echo "OK";
wp_die();
}
echo "ERROR";
wp_die();
}
add_action('admin_menu', 'i9_analytics_integration');
function i9_analytics_integration()
{
add_menu_page('i9 Analytics Integration Settings', 'i9 Analytics Integration', 'administrator', __FILE__, 'i9_analytics_integration_options_page', plugins_url('/images/icon.png', __FILE__));
add_action('admin_init', 'register_i9_analytics_integration_settings');
}
function register_i9_analytics_integration_settings()
{
//register our settings
register_setting('i9-analytics-integration-group', 'i9_heap_id');
register_setting('i9-analytics-integration-group', 'i9_mixpanel_id');
register_setting('i9-analytics-integration-group', 'i9_amplitude_id');
}
function i9_analytics_integration_options_page()
{
?>
<div class="wrap">
<h1>i9 Analytics Integration</h1>
<form id="i9_analytics" method="post" action="options.php">
<?php settings_fields('i9-analytics-integration-group'); ?>
<?php do_settings_sections('i9-analytics-integration-group'); ?>
<table class="form-table">
<tr valign="top">
<th scope="row">Heap ID</th>
<td><input type="text" name="i9_heap_id" value="<?php echo esc_attr(get_option('i9_heap_id')); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">MixPanel ID</th>
<td><input type="text" name="i9_mixpanel_id" value="<?php echo esc_attr(get_option('i9_mixpanel_id')); ?>" /></td>
</tr>
<tr valign="top">
<th scope="row">Amplitude ID</th>
<td><input type="text" name="i9_amplitude_id" value="<?php echo esc_attr(get_option('i9_amplitude_id')); ?>" /></td>
</tr>
</table>
<?php submit_button(); ?>
<span id="message"></span>
<script>
jQuery('#i9_analytics').on('submit', (e) => {
jQuery('#message').html('Saving').show();
e.preventDefault();
let formdata = jQuery("#i9_analytics").serializeArray();
let data = {};
jQuery(formdata).each((index, obj) => {
data[obj.name] = obj.value;
});
let postData = {
action: 'save_i9_analytics_options',
};
Object.assign(data, postData);
jQuery.post(ajaxurl, data).done(() => {
jQuery('#message').html('General Settings Saved').fadeOut(0).fadeIn(200);
}).fail((err) => {
jQuery('#message').html('Error: ' + JSON.stringify(err)).fadeOut(0).fadeIn(200);
});
})
</script>
</form>
</div>
<?php } ?>
@Cauen
Copy link
Author

Cauen commented Aug 31, 2019

image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment