Refactor settings page

Set specific function to retrieve plugin settings. Extract section and
field creation into separate, one trick functions.
This commit is contained in:
Robin Cornett
2015-07-26 14:57:22 -04:00
parent 9f008cd210
commit bd4e155d7d
@@ -50,6 +50,7 @@ class Display_Featured_Image_Genesis_Settings {
*/
public function do_settings_form() {
$page_title = get_admin_page_title();
$this->displaysetting = $this->get_display_setting();
echo '<div class="wrap">';
echo '<h2>' . esc_attr( $page_title ) . '</h2>';
@@ -61,6 +62,7 @@ class Display_Featured_Image_Genesis_Settings {
settings_errors();
echo '</form>';
echo '</div>';
}
/**
@@ -73,6 +75,17 @@ class Display_Featured_Image_Genesis_Settings {
register_setting( 'displayfeaturedimagegenesis', 'displayfeaturedimagegenesis', array( $this, 'do_validation_things' ) );
$this->register_sections();
}
/**
* Retrieve plugin setting.
* @return array All plugin settings.
*
* @since 2.3.0
*/
public function get_display_setting() {
$defaults = array(
'less_header' => 0,
'default' => '',
@@ -83,16 +96,61 @@ class Display_Featured_Image_Genesis_Settings {
'feed_image' => 0,
);
$this->displaysetting = get_option( 'displayfeaturedimagegenesis', $defaults );
return get_option( 'displayfeaturedimagegenesis', $defaults );
}
/**
* Register plugin settings page sections
*
* @since 2.3.0
*/
protected function register_sections() {
$sections = array(
'main' => array(
'id' => 'display_featured_image_section',
'title' => __( 'Optional Sitewide Settings', 'display-featured-image-genesis' ),
'callback' => 'section_description',
'id' => 'main',
'title' => __( 'Optional Sitewide Settings', 'display-featured-image-genesis' ),
),
);
$args = array(
'public' => true,
'_builtin' => false,
'has_archive' => true,
);
$output = 'objects';
$this->post_types = get_post_types( $args, $output );
if ( $this->post_types ) {
$sections['cpt'] = array(
'id' => 'cpt',
'title' => __( 'Featured Images for Custom Post Types', 'display-featured-image-genesis' ),
);
}
foreach ( $sections as $section ) {
add_settings_section(
$section['id'],
$section['title'],
array( $this, $section['id'] . '_section_description' ),
$this->page
);
}
$this->register_fields( $sections );
}
/**
* Register plugin settings fields
* @param array $sections registerd sections
* @return array all settings fields
*
* @since 2.3.0
*/
protected function register_fields( $sections ) {
$this->fields = array(
array(
'id' => 'less_header',
@@ -143,23 +201,8 @@ class Display_Featured_Image_Genesis_Settings {
),
);
$args = array(
'public' => true,
'_builtin' => false,
'has_archive' => true,
);
$output = 'objects';
$this->post_types = get_post_types( $args, $output );
if ( $this->post_types ) {
$sections['cpt'] = array(
'id' => 'display_featured_image_custom_post_types',
'title' => __( 'Featured Images for Custom Post Types', 'display-featured-image-genesis' ),
'callback' => 'cpt_section_description',
);
foreach ( $this->post_types as $post ) {
$this->fields[] = array(
'id' => '[post_types]' . esc_attr( $post->name ),
@@ -171,15 +214,6 @@ class Display_Featured_Image_Genesis_Settings {
}
}
foreach ( $sections as $section ) {
add_settings_section(
$section['id'],
$section['title'],
array( $this, $section['callback'] ),
$this->page
);
}
foreach ( $this->fields as $field ) {
add_settings_field(
'[' . $field['id'] . ']',
@@ -199,7 +233,7 @@ class Display_Featured_Image_Genesis_Settings {
*
* @since 1.1.0
*/
public function section_description() {
public function main_section_description() {
printf( '<p>%s</p>', esc_html__( 'The Display Featured Image for Genesis plugin has just a few optional settings. Check the Help tab for more information. ', 'display-featured-image-genesis' ) );
}