Created
April 2, 2012 03:18
-
-
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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