create admin class for custom featured image column

This commit is contained in:
Robin Cornett
2015-01-01 18:38:59 -05:00
parent 7160b7cdaa
commit adb2ab6d3e
4 changed files with 82 additions and 53 deletions
+3
View File
@@ -26,6 +26,7 @@ if ( ! defined( 'WPINC' ) ) {
// Include classes
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-description.php';
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-output.php';
@@ -34,6 +35,7 @@ require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesi
require plugin_dir_path( __FILE__ ) . 'includes/class-displayfeaturedimagegenesis-taxonomies.php';
// Instantiate dependent classes
$displayfeaturedimagegenesis_admin = new Display_Featured_Image_Genesis_Admin();
$displayfeaturedimagegenesis_common = new Display_Featured_Image_Genesis_Common();
$displayfeaturedimagegenesis_description = new Display_Featured_Image_Genesis_Description();
$displayfeaturedimagegenesis_output = new Display_Featured_Image_Genesis_Output();
@@ -42,6 +44,7 @@ $displayfeaturedimagegenesis_settings = new Display_Featured_Image_Genesis_Se
$displayfeaturedimagegenesis_taxonomies = new Display_Featured_Image_Genesis_Taxonomies();
$displayfeaturedimage = new Display_Featured_Image_Genesis(
$displayfeaturedimagegenesis_admin,
$displayfeaturedimagegenesis_common,
$displayfeaturedimagegenesis_description,
$displayfeaturedimagegenesis_output,
@@ -0,0 +1,74 @@
<?php
/**
* admin columns
*
* @package DisplayFeaturedImageGenesis
* @since x.y.z
*/
class Display_Featured_Image_Genesis_Admin {
public function set_up_taxonomy_columns() {
$args = array(
'public' => true
);
$output = 'names';
$taxonomies = get_taxonomies( $args, $output );
foreach ( $taxonomies as $taxonomy ) {
add_filter( "manage_edit-{$taxonomy}_columns", array( $this, 'add_column' ) );
add_action( "manage_{$taxonomy}_custom_column", array( $this, 'manage_taxonomy_column' ), 10, 3 );
}
}
public function set_up_post_type_columns() {
$args = array(
'public' => true,
'_builtin' => false,
);
$output = 'names';
$post_types = get_post_types( $args, $output );
$post_types['post'] = 'post';
$post_types['page'] = 'page';
foreach ( $post_types as $post_type ) {
add_filter( "manage_{$post_type}_posts_columns", array( $this, 'add_column' ) );
add_action( "manage_{$post_type}_posts_custom_column", array( $this, 'custom_post_columns' ), 10, 2 );
}
}
public function add_column( $columns ) {
$new_columns = $columns;
array_splice( $new_columns, 1 );
$new_columns['featured_image'] = __( 'Featured Image', 'display-featured-image-genesis' );
return array_merge( $new_columns, $columns );
}
public function manage_taxonomy_column( $value, $column, $term_id ) {
if ( 'featured_image' === $column ) {
$term_meta = get_option( "taxonomy_$term_id" );
if ( ! empty( $term_meta['dfig_image'] ) ) {
$id = Display_Featured_Image_Genesis_Common::get_image_id( $term_meta['dfig_image'] );
$preview = wp_get_attachment_image_src( $id, 'thumbnail' );
echo '<img src="' . $preview[0] . '" width="60" />';
}
}
}
public function custom_post_columns( $column, $post_id ) {
if ( 'featured_image' === $column ) {
$image = get_the_post_thumbnail( $post_id, array( 60,60 ) );
if ( $image ) {
echo $image;
}
}
}
}
@@ -17,9 +17,6 @@ class Display_Featured_Image_Genesis_Taxonomies {
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_filter( "manage_edit-{$taxonomy}_columns", array( $this, 'add_column' ) );
add_action( "manage_{$taxonomy}_custom_column", array( $this, 'manage_column' ), 10, 3 );
}
}
@@ -103,7 +100,7 @@ class Display_Featured_Image_Genesis_Taxonomies {
* Returns previous value for image if not correct file type/size
* @param string $new_value New value
* @return string New or previous value, depending on allowed image size.
* @since 1.2.2
* @since x.y.z
*/
protected function validate_image( $new_value ) {
@@ -152,51 +149,4 @@ class Display_Featured_Image_Genesis_Taxonomies {
return ( $file_ext && in_array( $file_ext, $this->valid ) );
}
public function add_column( $columns ) {
$columns = array(
'cb' => '<input type="checkbox" />',
'featured_image' => __( 'Featured Image', 'display-featured-image-genesis' ),
'name' => __( 'Name', 'display-featured-image-genesis' ),
'description' => __( 'Description', 'display-featured-image-genesis' ),
'slug' => __( 'Slug', 'display-featured-image-genesis' ),
'posts' => __( 'Count', 'display-featured-image-genesis' )
);
return $columns;
}
public function manage_column( $value, $column, $term_id ) {
if ( 'featured_image' === $column ) {
$term_meta = get_option( "taxonomy_$term_id" );
if ( ! empty( $term_meta['dfig_image'] ) ) {
$id = Display_Featured_Image_Genesis_Common::get_image_id( $term_meta['dfig_image'] );
$preview = wp_get_attachment_image_src( $id, 'thumbnail' );
echo '<img src="' . $preview[0] . '" width="60" />';
}
}
}
public function add_post_columns( $columns ) {
$new_columns = $columns;
array_splice( $new_columns, 1 );
$new_columns['featured_image'] = __( 'Featured Image', 'display-featured-image-genesis' );
return array_merge( $new_columns, $columns );
}
public function custom_post_columns( $column, $post_id ) {
if ( 'featured_image' === $column ) {
$image = get_the_post_thumbnail( $post_id, array( 60,60 ) );
if ( $image ) {
echo $image;
}
}
}
}
@@ -16,7 +16,8 @@
*/
class Display_Featured_Image_Genesis {
function __construct( $common, $description, $output, $rss, $settings, $taxonomies ) {
function __construct( $admin, $common, $description, $output, $rss, $settings, $taxonomies ) {
$this->admin = $admin;
$this->common = $common;
$this->archive = $description;
$this->output = $output;
@@ -35,7 +36,8 @@ class Display_Featured_Image_Genesis {
add_action( 'init', array( $this, 'add_plugin_supports' ) );
add_action( 'admin_init', array( $this, 'check_settings' ) );
add_action( 'admin_init', array( $this->taxonomies, 'set_taxonomy_meta' ) );
add_action( 'admin_init', array( $this->taxonomies, 'add_columns_post_types' ) );
add_action( 'admin_init', array( $this->admin, 'set_up_taxonomy_columns' ) );
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( 'get_header', array( $this->output, 'manage_output' ) );