WordPress Custom General Options

class jtThemeAdmin {

	public $settings =  array(
		array(
			'name' => 'jt-twitter',
			'label' => 'Twitter URL'
		),
		array(
			'name' => 'jt-linkedin',
			'label' => 'Linkedin URL'
		)
	);
	
	public function __construct() {
		add_action( 'admin_init', array( $this, 'register_custom_settings' ) );
		add_action( 'admin_init',  array( $this, 'register_setting_fields' ) );
	}
	
	public function register_custom_settings( ) {
		foreach( $this->settings as $setting ) {
			register_setting( 'general', $setting['name'] );
		}
	}
	
	public function register_setting_fields( ) {
		foreach( $this->settings as $setting ) {
			add_settings_field(
				$setting['name'] .'_setting-id',
				$setting['label'],
				array( $this, 'custom_settings_callback_function' ),
				'general',
				'default',
				array( 'name' => $setting['name'], 'label_for' => $setting['label'] )
			);
		}
	}
	
	function custom_settings_callback_function( $args ) {
		$option = get_option( $args['name'] );
		echo '<input type="text" id="'. $args['name'] .'" name="'. $args['name'] .'" value="' . $option . '" class="regular-text ltr" />';
	}
	
}
$jtThemesAdmin = new jtThemeAdmin();

Comments are closed.