Skip to content

Instantly share code, notes, and snippets.

@cpaul007
Created November 18, 2014 16:13
Show Gist options
  • Save cpaul007/3ceae365cc5cda7da993 to your computer and use it in GitHub Desktop.
Save cpaul007/3ceae365cc5cda7da993 to your computer and use it in GitHub Desktop.
Custom Post Type: Slider
<?php
/*-----------------------------------------------------------------------------------*/
/* Custom Post Type - Slider */
/*-----------------------------------------------------------------------------------*/
if ( ! function_exists( 'gd_add_cpt_slider' ) ) {
function gd_add_cpt_slider() {
// "Slider" Custom Post Type
$labels = array(
'name' => _x( 'Slider', 'post type general name', 'genesisdeveloper' ),
'singular_name' => _x( 'Slider', 'post type singular name', 'genesisdeveloper' ),
'add_new' => _x( 'Add New', 'slide', 'genesisdeveloper' ),
'add_new_item' => __( 'Add New Slider', 'genesisdeveloper' ),
'edit_item' => __( 'Edit Slider', 'genesisdeveloper' ),
'new_item' => __( 'New Slider', 'genesisdeveloper' ),
'view_item' => __( 'View Slider', 'genesisdeveloper' ),
'search_items' => __( 'Search Slider', 'genesisdeveloper' ),
'not_found' => __( 'No slider found', 'genesisdeveloper' ),
'not_found_in_trash' => __( 'No slider found in Trash', 'genesisdeveloper' ),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'slider' ),
'capability_type' => 'post',
'hierarchical' => false,
'menu_icon' => 'dashicons-slides',
'menu_position' => null,
'has_archive' => true,
'supports' => array( 'title', 'editor', 'thumbnail' )
);
$args['exclude_from_search'] = true;
register_post_type( 'slider', $args );
}
add_action( 'init', 'gd_add_cpt_slider' );
add_action( 'add_meta_boxes', 'gd_add_slider_custom_box' );
add_action( 'save_post', 'gd_slider_metabox_save', 1, 2 );
function gd_add_slider_custom_box(){
add_meta_box('slider_details', __( 'Slider Settings', 'cs' ), 'slider_meta_box', 'slider', 'side', 'high');
}
function slider_meta_box(){
wp_nonce_field( 'gd_slider_metabox_save', 'gd_slider_metabox_nonce' );
$readMoretxt = (get_post_meta(get_the_ID(), '_readmore_txt', true)) ? get_post_meta(get_the_ID(), '_readmore_txt', true) : "Read More";
echo '<div style="width: 90%;">';
printf( '<p><label>%s&nbsp;&nbsp;<input type="checkbox" id="show_content" name="sld[_hide_content]" value="yes" %s/></label></p>', __( 'Disable the title & content', 'cs' ), checked("yes", esc_attr( get_post_meta(get_the_ID(), '_hide_content', true) ), false) );
printf( '<p><span class="description">%s</span></p>', __( 'Hide the title, content & read more button from slider image', 'genesisdeveloper' ) );
echo '</div>';
echo '<div style="width: 90%;">';
printf( '<p><label>%s<input type="text" name="sld[_readmore_url]" id="readmore_url" class="large-text" value="%s" /></label></p>', __( 'Read More URL: ', 'cs' ), esc_attr( get_post_meta(get_the_ID(), '_readmore_url', true) ) );
printf( '<p><span class="description">%s</span></p>', __( 'Link of Read More Button', 'genesisdeveloper' ) );
echo '</div>';
echo '<div style="width: 90%;">';
printf( '<p><label>%s<input type="text" name="sld[_readmore_txt]" id="readmore_txt" class="large-text" value="%s" /></label></p>', __( 'Read More Text: ', 'cs' ), esc_attr( $readMoretxt ) );
printf( '<p><span class="description">%s</span></p>', __( 'Replace the Read More button text', 'genesisdeveloper' ) );
echo '</div><br style="clear: both;" />';
}
function gd_slider_metabox_save( $post_id, $post ) {
/** Run only on testimonials post type save */
if ( 'slider' == $post->post_type ) {
/** Verify the nonce */
if ( ! wp_verify_nonce( $_POST['gd_slider_metabox_nonce'], 'gd_slider_metabox_save' ) )
return;
/** Don't try to save the data under autosave, ajax, or future post */
if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) return;
if ( defined( 'DOING_CRON' ) && DOING_CRON ) return;
/** Check permissions */
if ( ! current_user_can( 'edit_post', $post_id ) )
return;
$sld_details = $_POST['sld'];
/** Store the custom fields */
foreach ( (array) $sld_details as $key => $value ) {
/** Save/Update/Delete */
if ( $value ) {
update_post_meta($post->ID, $key, $value);
} else {
delete_post_meta($post->ID, $key);
}
if(!isset($sld_details['_hide_content'])){
delete_post_meta($post->ID, '_hide_content');
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment