diff --git a/display-featured-image-genesis.php b/display-featured-image-genesis.php index 9ab905e..14716bf 100644 --- a/display-featured-image-genesis.php +++ b/display-featured-image-genesis.php @@ -6,7 +6,7 @@ * @author Robin Cornett * @license GPL-2.0+ * @link http://robincornett.com - * @copyright 2014-2015 Robin Cornett Creative, LLC + * @copyright 2014-2015-2015 Robin Cornett Creative, LLC * * @wordpress-plugin * Plugin Name: Display Featured Image for Genesis diff --git a/includes/class-displayfeaturedimagegenesis-admin.php b/includes/class-displayfeaturedimagegenesis-admin.php index 8926f3d..19e87ec 100644 --- a/includes/class-displayfeaturedimagegenesis-admin.php +++ b/includes/class-displayfeaturedimagegenesis-admin.php @@ -106,15 +106,14 @@ class Display_Featured_Image_Genesis_Admin { return; } - $term_meta = get_option( "displayfeaturedimagegenesis_$term_id" ); - - if ( empty( $term_meta['term_image'] ) ) { + $image_id = displayfeaturedimagegenesis_term_image( $term_id ); + if ( ! $image_id ) { return; } $taxonomy = filter_input( INPUT_POST, 'taxonomy', FILTER_SANITIZE_STRING ); $taxonomy = ! is_null( $taxonomy ) ? $taxonomy : get_current_screen()->taxonomy; - $image_id = displayfeaturedimagegenesis_check_image_id( $term_meta['term_image'] ); + $image_id = displayfeaturedimagegenesis_check_image_id( $image_id ); $args = array( 'image_id' => $image_id, diff --git a/includes/class-displayfeaturedimagegenesis-common.php b/includes/class-displayfeaturedimagegenesis-common.php index 47e027e..df27d94 100644 --- a/includes/class-displayfeaturedimagegenesis-common.php +++ b/includes/class-displayfeaturedimagegenesis-common.php @@ -156,12 +156,8 @@ class Display_Featured_Image_Genesis_Common { } // taxonomy if ( is_category() || is_tag() || is_tax() ) { - $t_id = $object->term_id; - $term_meta = get_option( "displayfeaturedimagegenesis_$t_id" ); - // if there is a term image - if ( ! empty( $term_meta['term_image'] ) ) { - $image_id = displayfeaturedimagegenesis_check_image_id( $term_meta['term_image'] ); - } + $term_id = $object->term_id; + $image_id = displayfeaturedimagegenesis_term_image( $term_id ); } // any singular post/page/CPT diff --git a/includes/class-displayfeaturedimagegenesis-taxonomies.php b/includes/class-displayfeaturedimagegenesis-taxonomies.php index 24b4666..6cf3b9d 100644 --- a/includes/class-displayfeaturedimagegenesis-taxonomies.php +++ b/includes/class-displayfeaturedimagegenesis-taxonomies.php @@ -17,6 +17,8 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G */ public function set_taxonomy_meta() { + register_meta( 'term', 'displayfeaturedimagegenesis', array( $this, 'validate_taxonomy_image' ) ); + $args = array( 'public' => true, ); @@ -25,8 +27,9 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G foreach ( $taxonomies as $taxonomy ) { add_action( "{$taxonomy}_add_form_fields", array( $this, 'add_taxonomy_meta_fields' ), 5, 2 ); add_action( "{$taxonomy}_edit_form_fields", array( $this, 'edit_taxonomy_meta_fields' ), 5, 2 ); - add_action( "edited_{$taxonomy}", array( $this, 'save_taxonomy_custom_meta' ), 10, 2 ); - add_action( "create_{$taxonomy}", array( $this, 'save_taxonomy_custom_meta' ), 10, 2 ); + add_action( "edited_{$taxonomy}", array( $this, 'save_taxonomy_custom_meta' ) ); + add_action( "create_{$taxonomy}", array( $this, 'save_taxonomy_custom_meta' ) ); + add_action( 'edit_{$taxonomy}', array( $this, 'save_taxonomy_custom_meta' ) ); add_action( 'load-edit-tags.php', array( $this, 'help' ) ); } @@ -41,6 +44,7 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G ?>
+ @@ -61,21 +65,20 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G */ public function edit_taxonomy_meta_fields( $term ) { - $t_id = $term->term_id; - $displaysetting = get_option( "displayfeaturedimagegenesis_$t_id" ); - $id = ''; + $term_id = $term->term_id; + $image_id = displayfeaturedimagegenesis_term_image( $term_id ); echo ''; + wp_nonce_field( 'displayfeaturedimagegenesis', 'displayfeaturedimagegenesis' ); printf( '', esc_attr__( 'Featured Image', 'display-featured-image-genesis' ) ); echo ''; - $id = $displaysetting['term_image']; $name = 'displayfeaturedimagegenesis[term_image]'; - if ( ! empty( $id ) ) { - echo wp_kses_post( $this->render_image_preview( $id ) ); + if ( $image_id ) { + echo wp_kses_post( $this->render_image_preview( $image_id ) ); } - $this->render_buttons( $id, $name ); + $this->render_buttons( $image_id, $name ); echo '

'; printf( esc_attr__( 'Set Featured Image for %1$s.', 'display-featured-image-genesis' ), @@ -98,24 +101,33 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G if ( ! isset( $_POST['displayfeaturedimagegenesis'] ) ) { return; } - $t_id = $term_id; - $displaysetting = get_option( "displayfeaturedimagegenesis_$t_id" ); - $cat_keys = array_keys( $_POST['displayfeaturedimagegenesis'] ); - $is_updated = false; - foreach ( $cat_keys as $key ) { - if ( isset( $_POST['displayfeaturedimagegenesis'][ $key ] ) ) { - $displaysetting[ $key ] = $_POST['displayfeaturedimagegenesis'][ $key ]; - if ( $_POST['displayfeaturedimagegenesis']['term_image'] === $displaysetting[ $key ] ) { - $displaysetting[ $key ] = $this->validate_taxonomy_image( $_POST['displayfeaturedimagegenesis'][ $key ] ); - if ( false !== $displaysetting[ $key ] ) { - $is_updated = true; + $displaysetting = displayfeaturedimagegenesis_term_image( $term_id ); + if ( $GLOBALS['wp_version'] >= '4.4' ) { + $new_image = $this->validate_taxonomy_image( $_POST['displayfeaturedimagegenesis']['term_image'] ); + + if ( $displaysetting && '' === $new_image ) { + delete_term_meta( $term_id, 'displayfeaturedimagegenesis' ); + } else if ( $displaysetting !== $new_image ) { + update_term_meta( $term_id, 'displayfeaturedimagegenesis', $new_image ); + } + } else { + $cat_keys = array_keys( $_POST['displayfeaturedimagegenesis'] ); + $is_updated = false; + foreach ( $cat_keys as $key ) { + if ( isset( $_POST['displayfeaturedimagegenesis'][ $key ] ) ) { + $displaysetting[ $key ] = $_POST['displayfeaturedimagegenesis'][ $key ]; + if ( $_POST['displayfeaturedimagegenesis']['term_image'] === $displaysetting[ $key ] ) { + $displaysetting[ $key ] = $this->validate_taxonomy_image( $_POST['displayfeaturedimagegenesis'][ $key ] ); + if ( false !== $displaysetting[ $key ] ) { + $is_updated = true; + } } } } - } - // Save the option array. - if ( $is_updated ) { - update_option( "displayfeaturedimagegenesis_$t_id", $displaysetting ); + // Save the option array. + if ( $is_updated ) { + update_option( "displayfeaturedimagegenesis_$t_id", $displaysetting ); + } } } @@ -139,7 +151,7 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G $new_value = false; } - return $new_value; + return (int) $new_value; } /** @@ -173,7 +185,7 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G * @param integer @new_term_id The ID of the newly created term. * */ - function split_shared_term( $old_term_id, $new_term_id ) { + public function split_shared_term( $old_term_id, $new_term_id ) { $old_setting = get_option( "displayfeaturedimagegenesis_$old_term_id" ); $new_setting = get_option( "displayfeaturedimagegenesis_$new_term_id" ); @@ -187,5 +199,4 @@ class Display_Featured_Image_Genesis_Taxonomies extends Display_Featured_Image_G update_option( "displayfeaturedimagegenesis_$new_term_id", $new_setting ); } - } diff --git a/includes/helper-functions.php b/includes/helper-functions.php index 15a0d9c..8b0ade6 100644 --- a/includes/helper-functions.php +++ b/includes/helper-functions.php @@ -22,10 +22,9 @@ function display_featured_image_genesis_get_term_image_id( $image_id = '' ) { $terms = wp_get_object_terms( get_the_ID(), $taxonomies, $args ); foreach ( $terms as $term ) { - $t_id = $term->term_id; - $term_meta = get_option( "displayfeaturedimagegenesis_$t_id" ); - if ( ! empty( $term_meta['term_image'] ) ) { - $image_id = displayfeaturedimagegenesis_check_image_id( $term_meta['term_image'] ); + $term_id = $term->term_id; + $image_id = displayfeaturedimagegenesis_term_image( $term_id ); + if ( $image_id ) { break; } } @@ -34,6 +33,15 @@ function display_featured_image_genesis_get_term_image_id( $image_id = '' ) { } +function displayfeaturedimagegenesis_term_image( $term_id ) { + $image_id = get_term_meta( $term_id, 'displayfeaturedimagegenesis', true ); + if ( ! $image_id ) { + $term_meta = get_option( "displayfeaturedimagegenesis_$term_id" ); + $image_id = $term_meta['term_image']; + } + return $image_id; +} + /** * Helper function to get the term image URL. * @param string $size image size