From 1b4e5e8bf883be2ef7005679bea98dbfb79904d6 Mon Sep 17 00:00:00 2001 From: Robin Cornett Date: Thu, 31 Mar 2016 11:36:55 -0400 Subject: [PATCH] Add fallback setting for custom content types --- ...ass-displayfeaturedimagegenesis-common.php | 12 +++++---- ...ass-displayfeaturedimagegenesis-helper.php | 27 ++++++++++++++++--- ...s-displayfeaturedimagegenesis-settings.php | 10 +++++++ 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/includes/class-displayfeaturedimagegenesis-common.php b/includes/class-displayfeaturedimagegenesis-common.php index 7fb46ec..a6bc183 100644 --- a/includes/class-displayfeaturedimagegenesis-common.php +++ b/includes/class-displayfeaturedimagegenesis-common.php @@ -160,11 +160,13 @@ class Display_Featured_Image_Genesis_Common { } } - $thumb_metadata = wp_get_attachment_metadata( get_post_thumbnail_id( get_the_ID() ) ); // needed only for the next line - $width = $thumb_metadata ? $thumb_metadata['width'] : ''; - $medium = (int) apply_filters( 'displayfeaturedimagegenesis_set_medium_width', get_option( 'medium_size_w' ) ); - if ( has_post_thumbnail() && $width > $medium ) { - $image_id = get_post_thumbnail_id( get_the_ID() ); + if ( isset( $setting['fallback'][ $post_type ] ) && ! $setting['fallback'][ $post_type ] ) { + $thumb_metadata = wp_get_attachment_metadata( get_post_thumbnail_id( get_the_ID() ) ); // needed only for the next line + $width = $thumb_metadata ? $thumb_metadata['width'] : ''; + $medium = (int) apply_filters( 'displayfeaturedimagegenesis_set_medium_width', get_option( 'medium_size_w' ) ); + if ( has_post_thumbnail() && $width > $medium ) { + $image_id = get_post_thumbnail_id( get_the_ID() ); + } } } diff --git a/includes/class-displayfeaturedimagegenesis-helper.php b/includes/class-displayfeaturedimagegenesis-helper.php index 3c615cf..108a813 100644 --- a/includes/class-displayfeaturedimagegenesis-helper.php +++ b/includes/class-displayfeaturedimagegenesis-helper.php @@ -89,16 +89,35 @@ class Display_Featured_Image_Genesis_Helper { * @since 2.3.0 */ public function do_checkbox( $args ) { - $setting = isset( $this->displaysetting[ $args['setting'] ] ) ? $this->displaysetting[ $args['setting'] ] : 0; - printf( '', esc_attr( $args['setting'] ) ); - printf( '', + echo '

'; + $setting = $this->get_checkbox_setting( $args ); + printf( '', esc_attr( $this->page ), esc_attr( $args['setting'] ) ); + printf( '', esc_attr( $args['setting'] ), checked( 1, esc_attr( $setting ), false ), - esc_attr( $args['label'] ) + esc_attr( $args['label'] ), + esc_attr( $this->page ) ); + echo '

'; $this->do_description( $args['setting'] ); } + /** + * Get the current value for the checkbox. + * @param $args + * + * @return int + */ + protected function get_checkbox_setting( $args ) { + $setting = isset( $this->setting[ $args['setting'] ] ) ? $this->setting[ $args['setting'] ] : 0; + if ( isset( $args['setting_name'] ) ) { + if ( isset( $this->setting[ $args['setting_name'] ][ $args['name'] ] ) ) { + $setting = $this->setting[ $args['setting_name'] ][ $args['name'] ]; + } + } + return $setting; + } + /** * Generic callback to display a field description. * @param string $args setting name used to identify description callback diff --git a/includes/class-displayfeaturedimagegenesis-settings.php b/includes/class-displayfeaturedimagegenesis-settings.php index 191cd13..dd699e5 100644 --- a/includes/class-displayfeaturedimagegenesis-settings.php +++ b/includes/class-displayfeaturedimagegenesis-settings.php @@ -324,6 +324,15 @@ class Display_Featured_Image_Genesis_Settings extends Display_Featured_Image_Gen $this->setting['post_type'][ $post_type ] = $id = ''; } + if ( is_object( $args['post_type'] ) ) { + $fallback_args = array( + 'setting' => "fallback][{$post_type}", + 'label' => sprintf( __( 'Always use a fallback image for %s.', 'display-featured-image-genesis' ), esc_attr( $args['post_type']->label ) ), + 'setting_name' => 'fallback', + 'name' => $post_type, + ); + $this->do_checkbox( $fallback_args ); + } $id = $this->setting['post_type'][ $post_type ]; $name = 'displayfeaturedimagegenesis[post_type][' . esc_attr( $post_type ) . ']'; if ( $id ) { @@ -393,6 +402,7 @@ class Display_Featured_Image_Genesis_Settings extends Display_Featured_Image_Gen // sanitize $new_value['post_type'][ $object->name ] = $this->validate_image( $new_value['post_type'][ $object->name ], $old_value, $label, $size_to_check ); + $new_value['fallback'][ $object->name ] = $this->one_zero( $new_value['fallback'][ $object->name ] ); } return $new_value;