Last active
December 20, 2015 08:59
-
-
Save clifgriffin/6104977 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
class ExamplePlugin { | |
var $settings = array(); | |
var $prefix = "example_"; | |
public function __construct() { | |
$this->settings = $this->get_settings_obj( $this->prefix ); | |
add_action('admin_init', array($this, 'save_settings') ); | |
} | |
// The Settings Framework | |
function get_settings_obj () { | |
return get_option("{$this->prefix}settings", false); | |
} | |
function set_settings_obj ( $newobj ) { | |
return update_option("{$this->prefix}settings", $newobj); | |
} | |
function update_setting ( $option = false, $newvalue ) { | |
if( $option === false ) return false; | |
$this->settings = $this->get_settings_obj($this->prefix); | |
$this->settings[$option] = $newvalue; | |
return $this->set_settings_obj($this->settings); | |
} | |
function get_setting ( $option = false ) { | |
if($option === false || ! isset($this->settings[$option]) ) return false; | |
return apply_filters($thix->prefix . 'get_setting', $this->settings[$option], $option); | |
} | |
function add_setting ( $option = false, $newvalue ) { | |
if($option === false ) return false; | |
if ( ! isset($this->settings[$option]) ) { | |
return $this->update_setting($option, $newvalue); | |
} else return false; | |
} | |
function get_field_name($setting, $type = 'string') { | |
return "{$this->prefix}setting[$setting][$type]"; | |
} | |
function save_settings() | |
{ | |
if( isset($_REQUEST["{$this->prefix}setting"]) && check_admin_referer('save_sa_settings','save_the_sa') ) { | |
$new_settings = $_REQUEST["{$this->prefix}setting"]; | |
foreach( $new_settings as $setting_name => $setting_value ) { | |
foreach( $setting_value as $type => $value ) { | |
if( $type == "array" ) { | |
$this->update_setting($setting_name, (array)explode(";", $value) ); | |
} else { | |
$this->update_setting($setting_name, $value); | |
} | |
} | |
} | |
add_action('admin_notices', array($this, 'saved_admin_notice') ); | |
} | |
} | |
// An Admin Page Example | |
function admin_page() { | |
?> | |
<input type="textbox" name="<?php echo $this->get_field_name('email_address'); ?>" value="<?php echo $this->get_setting('email_address'); ?>"> | |
<input type="submit" value="Save" /> | |
<?php | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment