Add advanced settings

This commit is contained in:
Robin Cornett
2017-10-31 19:47:25 -04:00
parent 8e75c8572c
commit cea3f75341
5 changed files with 108 additions and 27 deletions
@@ -509,7 +509,8 @@ class Display_Featured_Image_Genesis_Output {
* @return array
*/
protected function get_hooks() {
$large_hook = apply_filters( 'display_featured_image_genesis_move_large_image', 'genesis_before_loop' );
$setting = displayfeaturedimagegenesis_get_setting();
$large_hook = apply_filters( 'display_featured_image_genesis_move_large_image', $setting['large_hook'] );
if ( ! is_singular() || is_page_template( 'page_blog.php' ) ) {
$check = strpos( $large_hook, 'entry' ) || strpos( $large_hook, 'post' );
if ( false !== $check ) {
@@ -519,12 +520,12 @@ class Display_Featured_Image_Genesis_Output {
return apply_filters( 'displayfeaturedimagegenesis_hooks', array(
'backstretch' => array(
'hook' => apply_filters( 'display_featured_image_move_backstretch_image', 'genesis_after_header' ),
'priority' => apply_filters( 'display_featured_image_move_backstretch_image_priority', 10 ),
'hook' => apply_filters( 'display_featured_image_move_backstretch_image', $setting['backstretch_hook'] ),
'priority' => apply_filters( 'display_featured_image_move_backstretch_image_priority', $setting['backstretch_priority'] ),
),
'large' => array(
'hook' => $large_hook,
'priority' => apply_filters( 'display_featured_image_genesis_move_large_image_priority', 12 ),
'priority' => apply_filters( 'display_featured_image_genesis_move_large_image_priority', $setting['large_priority'] ),
),
) );
}
@@ -14,27 +14,31 @@ class DisplayFeaturedImageGenesisGetSetting {
*/
public function defaults() {
return apply_filters( 'displayfeaturedimagegenesis_defaults', array(
'less_header' => 0,
'default' => '',
'exclude_front' => 0,
'keep_titles' => 0,
'move_excerpts' => 0,
'is_paged' => 0,
'feed_image' => 0,
'thumbnails' => 0,
'post_types' => array(),
'skip' => array(),
'fallback' => array(),
'max_height' => '',
'always_default' => 0,
'centeredX' => 1,
'centeredY' => 1,
'fade' => 750,
'shortcode' => array(
'less_header' => 0,
'default' => '',
'exclude_front' => 0,
'keep_titles' => 0,
'move_excerpts' => 0,
'is_paged' => 0,
'feed_image' => 0,
'thumbnails' => 0,
'post_types' => array(),
'skip' => array(),
'fallback' => array(),
'max_height' => '',
'always_default' => 0,
'centeredX' => 1,
'centeredY' => 1,
'fade' => 750,
'shortcode' => array(
'displayfeaturedimagegenesis_term' => 0,
'displayfeaturedimagegenesis_author' => 0,
'displayfeaturedimagegenesis_post_type' => 0,
),
'backstretch_hook' => 'genesis_after_header',
'backstretch_priority' => 10,
'large_hook' => 'genesis_before_loop',
'large_priority' => 12,
) );
}
@@ -47,7 +47,6 @@ class Display_Featured_Image_Genesis_Helper extends DisplayFeaturedImageGenesisG
* @since 2.4.0
*/
protected function add_fields( $fields, $sections ) {
foreach ( $fields as $field ) {
add_settings_field(
'[' . $field['id'] . ']',
@@ -179,6 +178,26 @@ class Display_Featured_Image_Genesis_Helper extends DisplayFeaturedImageGenesisG
echo '</fieldset>';
}
/**
* Output a select field.
*
* @param $args
*/
public function do_select( $args ) {
printf( '<select id="%2$s[%1$s]" name="%2$s[%1$s]">',
esc_attr( $args['id'] ),
esc_attr( $this->page )
);
foreach ( (array) $args['options'] as $option => $label ) {
printf( '<option value="%s" %s>%s</option>',
esc_attr( $option ),
selected( $option, $this->setting[ $args['id'] ], false ),
esc_attr( $label )
);
}
echo '</select>';
}
/**
* Generic callback to display a field description.
*
@@ -26,6 +26,10 @@ class Display_Featured_Image_Genesis_Settings_Define extends Display_Featured_Im
'id' => 'cpt',
'title' => __( 'Featured Images for Custom Content Types', 'display-featured-image-genesis' ),
),
'advanced' => array(
'id' => 'advanced',
'title' => __( 'Advanced Plugin Settings', 'display-featured-image-genesis' ),
),
);
}
@@ -37,7 +41,7 @@ class Display_Featured_Image_Genesis_Settings_Define extends Display_Featured_Im
*/
public function register_fields() {
return array_merge( $this->define_main_fields(), $this->define_style_fields(), $this->define_cpt_fields() );
return array_merge( $this->define_main_fields(), $this->define_style_fields(), $this->define_cpt_fields(), $this->define_advanced_fields() );
}
/**
@@ -214,6 +218,54 @@ class Display_Featured_Image_Genesis_Settings_Define extends Display_Featured_Im
return $fields;
}
/**
* Define the fields for the advanced tab.
*
* @return array
*/
protected function define_advanced_fields() {
return array(
array(
'id' => 'backstretch_hook',
'title' => __( 'Backstretch Image Hook', 'display-featured-image-genesis' ),
'callback' => 'do_select',
'section' => 'advanced',
'options' => array(
'genesis_after_header' => __( 'After Header', 'display-featured-image-genesis' ),
'genesis_before_header' => __( 'Before Header', 'display-featured-image-genesis' ),
'genesis_header' => __( 'Header', 'display-featured-image-genesis' ),
),
),
array(
'id' => 'backstretch_priority',
'title' => __( 'Backstretch Image Priority', 'display-featured-image-genesis' ),
'callback' => 'do_number',
'section' => 'advanced',
'label' => '',
'min' => 1,
'max' => 100,
),
array(
'id' => 'large_hook',
'title' => __( 'Large Image Hook', 'display-featured-image-genesis' ),
'callback' => 'do_select',
'section' => 'advanced',
'options' => array(
'genesis_before_loop' => __( 'Before Entry Header', 'display-featured-image-genesis' ),
),
),
array(
'id' => 'large_priority',
'title' => __( 'Large Image Priority', 'display-featured-image-genesis' ),
'callback' => 'do_number',
'section' => 'advanced',
'label' => '',
'min' => 1,
'max' => 100,
),
);
}
/**
* @return array
*/
@@ -2,7 +2,7 @@
/**
* Class Display_Featured_Image_Genesis_Settings
* @package DisplayFeaturedImageGenesis
* @package DisplayFeaturedImageGenesis
* @copyright 2017 Robin Cornett
*/
class Display_Featured_Image_Genesis_Settings extends Display_Featured_Image_Genesis_Helper {
@@ -151,18 +151,22 @@ class Display_Featured_Image_Genesis_Settings extends Display_Featured_Image_Gen
*/
protected function define_tabs() {
return array(
'main' => array(
'main' => array(
'id' => 'main',
'tab' => __( 'Main', 'display-featured-image-genesis' ),
),
'style' => array(
'style' => array(
'id' => 'style',
'tab' => __( 'Backstretch Output', 'display-featured-image-genesis' ),
),
'cpt' => array(
'cpt' => array(
'id' => 'cpt',
'tab' => __( 'Content Types', 'display-featured-image-genesis' ),
),
'advanced' => array(
'id' => 'advanced',
'tab' => __( 'Advanced', 'display-featured-image-genesis' ),
),
);
}
@@ -194,6 +198,7 @@ class Display_Featured_Image_Genesis_Settings extends Display_Featured_Image_Gen
if ( $post_types ) {
$description .= __( ' Additionally, since you have custom post types with archives, you might like to set a featured image for each of them.', 'display-featured-image-genesis' );
}
return $description;
}