add class for cpt featured image setting

This commit is contained in:
Robin Cornett
2015-01-02 20:28:33 -05:00
parent d233ca773f
commit 12ad667b5f
3 changed files with 125 additions and 3 deletions
+3
View File
@@ -28,6 +28,7 @@ if ( ! defined( 'WPINC' ) ) {
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-admin.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-common.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-customposttypes.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-description.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-output.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-rss.php';
@@ -37,6 +38,7 @@ require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesi
// Instantiate dependent classes
$displayfeaturedimagegenesis_admin = new Display_Featured_Image_Genesis_Admin();
$displayfeaturedimagegenesis_common = new Display_Featured_Image_Genesis_Common();
$displayfeaturedimagegenesis_cpt = new Display_Featured_Image_Genesis_Custom_Post_Types();
$displayfeaturedimagegenesis_description = new Display_Featured_Image_Genesis_Description();
$displayfeaturedimagegenesis_output = new Display_Featured_Image_Genesis_Output();
$displayfeaturedimagegenesis_rss = new Display_Featured_Image_Genesis_RSS();
@@ -46,6 +48,7 @@ $displayfeaturedimagegenesis_taxonomies = new Display_Featured_Image_Genesis_Ta
$displayfeaturedimage = new Display_Featured_Image_Genesis(
$displayfeaturedimagegenesis_admin,
$displayfeaturedimagegenesis_common,
$displayfeaturedimagegenesis_cpt,
$displayfeaturedimagegenesis_description,
$displayfeaturedimagegenesis_output,
$displayfeaturedimagegenesis_rss,
@@ -0,0 +1,117 @@
<?php
class Display_Featured_Image_Genesis_Custom_Post_Types {
protected $post_types;
protected $post_type;
public function set_up_cpts() {
$args = array(
'public' => true,
'_builtin' => false,
'has_archive' => true,
);
$output = 'names';
$this->post_types = get_post_types( $args, $output );
foreach ( $this->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-$post_type" /*, array( $this, 'do_validation_things' )*/ );
$this->post_type = $post_type;
}
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-$this->post_type",
'<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() {
echo '<p>' . __( 'You may optionally set a featured image for the custom post type archive to use.', 'display-featured-image-genesis' ) . '</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();
$setting = get_option( "displayfeaturedimagegenesis-$this->post_type" );
echo 'is there a ' . $setting;
if ( ! empty( $setting['image'] ) ) {
$preview = wp_get_attachment_image_src( $setting['image'], '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-$this->post_type" value="' . esc_url( $setting ) . '" />';
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' ),
absint( $item->large + 1 )
) . '</p>';
}
}
@@ -16,9 +16,10 @@
*/
class Display_Featured_Image_Genesis {
function __construct( $admin, $common, $description, $output, $rss, $settings, $taxonomies ) {
function __construct( $admin, $common, $cpt, $description, $output, $rss, $settings, $taxonomies ) {
$this->admin = $admin;
$this->common = $common;
$this->cpt = $cpt;
$this->archive = $description;
$this->output = $output;
$this->rss = $rss;
@@ -40,6 +41,7 @@ class Display_Featured_Image_Genesis {
add_action( 'admin_init', array( $this->admin, 'set_up_post_type_columns' ) );
add_action( 'plugins_loaded', array( $this, 'load_textdomain' ) );
add_action( 'admin_menu', array( $this->settings, 'do_submenu_page' ) );
add_action( 'admin_menu', array( $this->cpt, 'set_up_cpts' ) );
add_action( 'get_header', array( $this->output, 'manage_output' ) );
add_action( 'template_redirect', array( $this->rss, 'maybe_do_feed' ) );
add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
@@ -162,13 +164,13 @@ class Display_Featured_Image_Genesis {
wp_register_script( 'displayfeaturedimage-upload', plugins_url( '/includes/js/settings-upload.js', dirname( __FILE__ ) ), array( 'jquery', 'media-upload', 'thickbox' ), $version );
if ( 'appearance_page_displayfeaturedimagegenesis' === get_current_screen()->id || ! empty( get_current_screen()->taxonomy ) ) {
// if ( 'appearance_page_displayfeaturedimagegenesis' === get_current_screen()->id || ! empty( get_current_screen()->taxonomy ) ) {
wp_enqueue_media();
wp_enqueue_script( 'displayfeaturedimage-upload' );
wp_localize_script( 'displayfeaturedimage-upload', 'objectL10n', array(
'text' => __( 'Choose Image', 'display-featured-image-genesis' ),
) );
}
// }
}