working cpt archive images

including sanitization! although the sanitized images all revert to the
last valid fallback value, which is not correct. May be better to revert
to blank?
This commit is contained in:
Robin Cornett
2015-01-03 17:43:18 -05:00
parent a64d5c68ee
commit a475716d5a
5 changed files with 99 additions and 134 deletions
+1
View File
@@ -1 +1,2 @@
Thumbs.db
languages/display-featured-image-genesis.mo
@@ -64,9 +64,8 @@ class Display_Featured_Image_Genesis_Common {
elseif ( is_post_type_archive() ) {
$object = get_queried_object();
$post_type = $object->name;
$meta = get_option( 'displayfeaturedimagegenesis-cpt' );
if ( isset( $meta[$post_type] ) ) {
$image_id = self::get_image_id( $meta[$post_type] );
if ( isset( $displaysetting['post_type'][$post_type] ) ) {
$image_id = self::get_image_id( $displaysetting['post_type'][$post_type] );
}
}
// taxonomy
@@ -1,126 +0,0 @@
<?php
class Display_Featured_Image_Genesis_Custom_Post_Types {
// protected $post_type;
public function set_up_cpts() {
$args = array(
'public' => true,
'_builtin' => false,
'has_archive' => true,
);
$output = 'names';
$post_types = get_post_types( $args, $output );
foreach ( $post_types as $post_type ) {
add_submenu_page(
"edit.php?post_type=$post_type",
__( 'Featured Image', 'display-featured-image-genesis' ),
__( 'Featured Image', 'display-featured-image-genesis' ),
'manage_categories',
"displayfeaturedimagegenesis-$post_type",
array( $this, 'do_settings_form' )
);
register_setting( 'displayfeaturedimagegenesis_cpt', 'displayfeaturedimagegenesis-cpt' /*, array( $this, 'do_validation_things' )*/ );
}
add_action( 'admin_init', array( $this, 'settings' ) );
}
/**
* create CPT settings form
* @return form Display Featured Image for Genesis for CPT
*
* @since x.y.z
*/
public function do_settings_form() {
$page_title = get_admin_page_title();
echo '<div class="wrap">';
echo '<h2>' . $page_title . '</h2>';
echo '<form action="options.php" method="post">';
settings_fields( 'displayfeaturedimagegenesis_cpt' );
do_settings_sections( 'displayfeaturedimagegenesis_cpt' );
// wp_nonce_field( 'displayfeaturedimagegenesis_save-settings', 'displayfeaturedimagegenesis_nonce', false );
submit_button();
// settings_errors();
echo '</form>';
echo '</div>';
}
public function settings() {
add_settings_section(
'display_featured_image_cpt_section',
__( 'Optional Featured Image', 'display-featured-image-genesis' ),
array( $this, 'section_description' ),
'displayfeaturedimagegenesis_cpt'
);
add_settings_field(
'displayfeaturedimagegenesis-cpt',
'<label for="displayfeaturedimagegenesis-cpt">' . __( 'Custom Post Type Featured Image', 'display-featured-image-genesis' ) . '</label>',
array( $this, 'set_cpt_image' ),
'displayfeaturedimagegenesis_cpt',
'display_featured_image_cpt_section'
);
}
/**
* Section description
* @return section description
*
* @since 1.1.0
*/
public function section_description() {
$screen = get_current_screen();
$post_type = $screen->post_type;
echo '<p>' . sprintf(
__( 'You may optionally set a featured image for the %s archive to use.', 'display-featured-image-genesis' ),
$post_type
) . '</p>';
}
/**
* Default image uploader
*
* @return image
*
* @since 1.2.1
*/
public function set_cpt_image() {
$item = Display_Featured_Image_Genesis_Common::get_image_variables();
$screen = get_current_screen();
$post_type = $screen->post_type;
$setting = get_option( 'displayfeaturedimagegenesis-cpt' );
if ( empty( $setting[$post_type] ) ) {
$setting[$post_type] = '';
}
if ( ! empty( $setting[$post_type] ) ) {
$id = Display_Featured_Image_Genesis_Common::get_image_id( $setting[$post_type] );
$preview = wp_get_attachment_image_src( $id, 'medium' );
echo '<div id="upload_logo_preview">';
echo '<img src="' . esc_url( $preview[0] ) . '" />';
echo '</div>';
}
echo '<input type="url" id="default_image_url" name="displayfeaturedimagegenesis-cpt[' . $post_type . ']" value="' . esc_url( $setting[$post_type] ) . '" />';
echo '<input id="upload_default_image" type="button" class="upload_default_image button" value="' . __( 'Select Image', 'display-featured-image-genesis' ) . '" />';
echo '<p class="description">' . sprintf(
__( 'If you would like to use a featured image for the custom post type archive, upload it here. Must be at least %1$s pixels wide.', 'display-featured-image-genesis' ),
absint( $item->large + 1 )
) . '</p>';
}
}
@@ -15,6 +15,10 @@ class Display_Featured_Image_Genesis_Settings {
*/
protected $displaysetting;
protected $post_types;
public $post_type;
/**
* add a submenu page under Appearance
* @return submenu Display Featured image settings page
@@ -132,6 +136,40 @@ class Display_Featured_Image_Genesis_Settings {
'display_featured_image_section'
);
$args = array(
'public' => true,
'_builtin' => false,
'has_archive' => true,
);
$output = 'objects';
$this->post_types = get_post_types( $args, $output );
if ( $this->post_types ) {
add_settings_section(
'display_featured_image_custom_post_types',
__( 'CPT Featured Images', 'display-featured-image-genesis' ),
array( $this, 'cpt_section_description' ),
'displayfeaturedimagegenesis'
);
// foreach ( $this->post_types as $post_type ) {
add_settings_field(
"displayfeaturedimagegenesis[post_types]",
__( ' Featured Image', 'display-featured-image-genesis' ),
array( $this, 'set_cpt_image' ),
'displayfeaturedimagegenesis',
'display_featured_image_custom_post_types'
// array( 'label for' => 'displayfeaturedimagegenesis' . $post_type->name )
);
// $this->post_type = $post_type->name;
// }
}
}
/**
@@ -144,6 +182,16 @@ class Display_Featured_Image_Genesis_Settings {
echo '<p>' . __( 'The Display Featured Image for Genesis plugin has just a few optional settings. Check the Help tab for more information. ', 'display-featured-image-genesis' ) . '</p>';
}
/**
* Section description
* @return section description
*
* @since 1.1.0
*/
public function cpt_section_description() {
echo '<p>' . __( 'Since you have custom post types with archives, you might like to set a featured image for each of them.', 'display-featured-image-genesis' ) . '</p>';
}
/**
* Setting for reduction amount
* @return number of pixels to remove in backstretch-set.js
@@ -175,7 +223,7 @@ class Display_Featured_Image_Genesis_Settings {
echo '<img src="' . esc_url( $preview[0] ) . '" />';
echo '</div>';
}
echo '<input type="url" id="default_image_url" name="displayfeaturedimagegenesis[default]" value="' . esc_url( $this->displaysetting['default'] ) . '" />';
echo '<input type="url" class="upload_image_url" id="default_image_url" name="displayfeaturedimagegenesis[default]" value="' . esc_url( $this->displaysetting['default'] ) . '" />';
echo '<input id="upload_default_image" type="button" class="upload_default_image button" value="' . __( 'Select Image', 'display-featured-image-genesis' ) . '" />';
echo '<p class="description">' . sprintf(
__( 'If you would like to use a default image for the featured image, upload it here. Must be at least %1$s pixels wide.', 'display-featured-image-genesis' ),
@@ -183,6 +231,42 @@ class Display_Featured_Image_Genesis_Settings {
) . '</p>';
}
/**
* Default image uploader
*
* @return image
*
* @since 1.2.1
*/
public function set_cpt_image() {
$item = Display_Featured_Image_Genesis_Common::get_image_variables();
foreach ( $this->post_types as $post_type ) {
$post_type = $post_type->name;
if ( empty( $this->displaysetting['post_type'][$post_type] ) ) {
$this->displaysetting['post_type'][$post_type] = '';
}
echo '<h3>' . $post_type . '</h3>';
if ( ! empty( $this->displaysetting['post_type'][$post_type] ) ) {
$id = Display_Featured_Image_Genesis_Common::get_image_id( $this->displaysetting['post_type'][$post_type] );
$preview = wp_get_attachment_image_src( $id, 'medium' );
echo '<div id="upload_logo_preview">';
echo '<img src="' . esc_url( $preview[0] ) . '" />';
echo '</div>';
}
echo '<input type="url" class="upload_image_url" id="displayfeaturedimagegenesis[post_type][' . $post_type . ']" name="displayfeaturedimagegenesis[post_type][' . $post_type . ']" value="' . esc_url( $this->displaysetting['post_type'][$post_type] ) . '" />';
echo '<input id="displayfeaturedimagegenesis[post_type][' . $post_type . ']" type="button" class="upload_default_image button" value="' . __( 'Select Image', 'display-featured-image-genesis' ) . '" />';
echo '<p class="description">' . sprintf(
__( 'If you would like to use a featured image for the %1$s archive, upload it here. Must be at least %2$s pixels wide.', 'display-featured-image-genesis' ),
$post_type,
absint( $item->large + 1 )
) . '</p>';
}
}
/**
* option to exclude featured image on front page
* @return 0 1 checkbox
@@ -254,6 +338,10 @@ class Display_Featured_Image_Genesis_Settings {
$new_value['feed_image'] = $this->one_zero( $new_value['feed_image'] );
foreach ( $this->post_types as $post_type ) {
$new_value['post_type'][$post_type->name] = $this->validate_image( $new_value['post_type'][$post_type->name] );
}
return $new_value;
}
+5 -2
View File
@@ -2,7 +2,9 @@ jQuery(document).ready(function($){
var custom_uploader;
$('#upload_default_image').click(function(e) {
$('.upload_default_image').click(function(e) {
var target_input = $(this).prev('.upload_image_url');
e.preventDefault();
@@ -24,7 +26,8 @@ jQuery(document).ready(function($){
//When a file is selected, grab the URL and set it as the text field's value
custom_uploader.on('select', function() {
attachment = custom_uploader.state().get('selection').first().toJSON();
$('#default_image_url').val(attachment.url);
// $('input[name=' + target_input + ']').val(attachment.url);
$(target_input).val(attachment.url);
});
//Open the uploader dialog