Skip to content

Instantly share code, notes, and snippets.

@BronsonQuick
Created April 2, 2012 03:18
Show Gist options
  • Save BronsonQuick/2280288 to your computer and use it in GitHub Desktop.
Save BronsonQuick/2280288 to your computer and use it in GitHub Desktop.
The backend for a Slider Custom Post Type which uses extra meta boxes and a wp_editor API for one of those boxes
<?php
/*
Plugin Name: Learning Seat Homepage Slider Custom Post Type
Plugin URI: http://www.sennza.com.au
Description: Custom Post Type to populate slider on the homepage
Version: 1.0
Author: Bronson Quick
Author URI: http://www.sennza.com.au
License: GPL2
*/
/* Custom Post Type - Slider */
add_action( 'init', 'register_cpt_homepage_slider' );
function register_cpt_homepage_slider() {
$labels = array(
'name' => _x( 'Slider', 'homepage_slider' ),
'singular_name' => _x( 'Slider', 'homepage_slider' ),
'add_new' => _x( 'Add New', 'homepage_slider' ),
'add_new_item' => _x( 'Add New Slider', 'homepage_slider' ),
'edit_item' => _x( 'Edit Slider', 'homepage_slider' ),
'new_item' => _x( 'New Slider', 'homepage_slider' ),
'view_item' => _x( 'View Slider', 'homepage_slider' ),
'search_items' => _x( 'Search Sliders', 'homepage_slider' ),
'not_found' => _x( 'No sliders found', 'homepage_slider' ),
'not_found_in_trash' => _x( 'No slider found in Trash', 'homepage_slider' ),
'parent_item_colon' => _x( 'Parent Slider:', 'homepage_slider' ),
'menu_name' => _x( 'Sliders', 'homepage_slider' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'description' => 'Create, edit or remove sliders.',
'supports' => array( 'title', 'editor', 'thumbnail', 'revisions', 'excerpt' ),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'show_in_nav_menus' => false,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => true,
'query_var' => true,
'can_export' => true,
'rewrite' => true,
'capability_type' => 'post'
);
register_post_type( 'homepage_slider', $args );
if ( function_exists( 'add_theme_support' ) ) {
add_image_size ( 'homepage-slider', 890, 320, true);
}
}
function sennza_add_meta_boxes() {
add_meta_box( 'sennza_homepage_slider_meta_box', __( 'Testimonial Details' ), 'sennza_homepage_slider_meta_box', 'homepage_slider', 'side', 'core' );
add_meta_box( 'sennza_homepage_slider_menu_meta_box', __( 'CTA Menu Area' ), 'sennza_homepage_slider_menu_meta_box', 'homepage_slider', 'normal', 'high' );
}
add_action( 'add_meta_boxes', 'sennza_add_meta_boxes' );
/**
* The contents of our custom meta box.
*
* @since 1.0
*/
function sennza_homepage_slider_meta_box() {
global $post_ID;
echo '<div id="testimonial_meta">';
wp_nonce_field( plugin_basename( __FILE__ ), 'sennza_homepage_slider_nonce' );
$client_name = get_post_meta( $post_ID, 'client_name', true );
$position = get_post_meta( $post_ID, 'position', true );
$company_name = get_post_meta( $post_ID, 'company_name', true );?>
<?php
// Clients Name ?>
<p>
<label for="client_name" style="width:80px; display:inline-block;"><?php _e( "Client's Name:" ); ?></label>
<input type="text" id="client_name" name="client_name" value="<?php echo $client_name; ?>" size="25" />
</p>
<?php
// Clients position in the company ?>
<p>
<label for="position" style="width:80px; display:inline-block;"><?php _e( "Position:" ); ?></label>
<input type="text" id="position" name="position" value="<?php echo $position; ?>" size="25" />
</p>
<?php
// Company Name ?>
<p>
<label for="company_name" style="width:80px; display:inline-block;"><?php _e( "Company Name:" ); ?></label>
<input type="text" id="company_name" name="company_name" value="<?php echo $company_name; ?>" size="25" />
</p>
</div>
<?php
}
/**
* Save the meta associated with a slider
*
* @since 1.0
*/
function sennza_save_homepage_slider_meta() {
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
return;
if ( empty( $_POST[ 'sennza_homepage_slider_nonce' ] ) || ! wp_verify_nonce( $_POST['sennza_homepage_slider_nonce'], plugin_basename( __FILE__ ) ) )
return;
//Save all the extra meta data
update_post_meta( $_POST[ 'ID' ], 'client_name', $_POST[ 'client_name' ] );
update_post_meta( $_POST[ 'ID' ], 'position', $_POST[ 'position' ] );
update_post_meta( $_POST[ 'ID' ], 'company_name', $_POST[ 'company_name' ] );
update_post_meta( $_POST[ 'ID' ], 'ctamenumeta', $_POST[ 'ctamenumeta' ] );
}
add_action( 'save_post', 'sennza_save_homepage_slider_meta' );
function sennza_homepage_slider_menu_meta_box() {
global $post_ID;
echo '<div id="cta_menu_meta">';
wp_nonce_field( plugin_basename( __FILE__ ), 'sennza_homepage_slider_nonce' );
$cta_menu_meta = get_post_meta( $post_ID, 'ctamenumeta', true );
// Content Area For Meta Box and use the wp_editor API http://codex.wordpress.org/Function_Reference/wp_editor
$args = array(
'media_buttons' => false
);
wp_editor($cta_menu_meta, 'ctamenumeta', $args);?>
</div>
<?php } ?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment