You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
3.1 KiB
100 lines
3.1 KiB
<?php
|
|
|
|
class ffsSettingsPage {
|
|
public function __construct() {
|
|
add_action( 'admin_menu', array( $this, 'ffsPluginPage' ) );
|
|
add_action( 'admin_init', array( $this, 'ffsPageInit' ) );
|
|
}
|
|
|
|
public function ffsPluginPage() {
|
|
|
|
add_options_page(
|
|
'Fruitful Shortcodes',
|
|
'Fruitful Shortcodes',
|
|
'manage_options',
|
|
'ffsAdminSettings',
|
|
array( $this, 'ffsCreateOptionsPage' )
|
|
);
|
|
}
|
|
|
|
public function ffsCreateOptionsPage() {
|
|
$this->fruitful_options = get_option( 'fruitful_options_plugin' );
|
|
?>
|
|
<div class="wrap">
|
|
<?php screen_icon(); ?>
|
|
<h2>Shortcode Settings</h2>
|
|
<form method="post" action="options.php">
|
|
<?php
|
|
settings_fields( 'ffsAdminGroup' );
|
|
do_settings_sections( 'ffsAdminSettings' );
|
|
submit_button();
|
|
?>
|
|
</form>
|
|
</div>
|
|
<?php
|
|
}
|
|
|
|
|
|
public function ffsPageInit() {
|
|
register_setting(
|
|
'ffsAdminGroup', // Option group
|
|
'fruitful_options_plugin', // Option name
|
|
array( $this, 'fruitful_sanitize' ) // Sanitize
|
|
);
|
|
|
|
add_settings_section(
|
|
'ffsSettingSection', // ID
|
|
'', // Title
|
|
null, // Callback
|
|
'ffsAdminSettings' // Page
|
|
);
|
|
|
|
add_settings_field(
|
|
'fruitful_post_types', // ID
|
|
'Display On', // Title
|
|
array( $this, 'fruitful_get_post_types_call' ), // Callback
|
|
'ffsAdminSettings', // Page
|
|
'ffsSettingSection' // Section
|
|
);
|
|
|
|
}
|
|
|
|
/**
|
|
* Sanitize each setting field as needed
|
|
*
|
|
* @param array $input Contains all settings fields as array keys
|
|
*/
|
|
public function fruitful_sanitize( $elements ) {
|
|
|
|
$new_elements = array();
|
|
if( isset( $elements['fruitful_post_types'] ) ) $new_elements['fruitful_post_types'] = $elements['fruitful_post_types'];
|
|
|
|
return $new_elements;
|
|
}
|
|
|
|
|
|
protected function fruitful_getPostTypes() {
|
|
return get_post_types(array('public' => true));
|
|
}
|
|
|
|
public function fruitful_get_post_types_call() {
|
|
$pst_arr = ($pst_arr = $this->fruitful_options['fruitful_post_types']) ? ($pst_arr) : array('page', 'post');
|
|
|
|
foreach ($this->fruitful_getPostTypes() as $post_type) {
|
|
$checked = (in_array($post_type, $pst_arr)) ? ' checked="checked"' : '';
|
|
?>
|
|
<label>
|
|
<input type="checkbox"<?php echo $checked; ?> value="<?php echo $post_type; ?>" id="fruitful_post_types_<?php echo $post_type; ?>" name="fruitful_options_plugin[fruitful_post_types][]" />
|
|
<?php echo $post_type; ?>
|
|
</label><br>
|
|
<?php }
|
|
?>
|
|
<p class="description indicator-hint">
|
|
<?php _e("Select for which content types...", "ff_shortcodes"); ?>
|
|
</p>
|
|
<?php
|
|
}
|
|
|
|
}
|
|
|
|
if( is_admin() ) $my_settings_page = new ffsSettingsPage();
|