After long gap another new tips is published today.
Currently lot of users are using the Genesis Responsive Slider or Soliloquy Slider in Genesis Child Theme. But I am going with free version slider. Flexslider is a free slider which is coming from WooThemes. Minimum PRO Theme have no slider option for home page. So I choose this theme and replace the fullwidth banner by this slider.Here is the steps:
Step 1: Creating Slider CPT
First registering a custom post type “Slider“. So user can easily handle the slider content from Dashboard. Create a new file “slider-cpt.php” and upload it into child theme folder. File is containing following codes:
/*-----------------------------------------------------------------------------------*/ /* 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 <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'); } } } } }
Step 2: Including PHP file & Inisiating new Image size for slider
Including the “slider-cpt.php” file in functions.php file and generating new image size for slider images. Put the following codes in functions.php file:
//including slider CPT include('slider-cpt.php'); //* Add new image size add_image_size( 'slider', 9999, 750, TRUE );
Step 3. Removing default banner and Adding Slider on Home page
Download the flexlsider package from http://www.woothemes.com/flexslider/ and upload “jquery.flexslider-min.js” file in “js” folder and “flexslider.css” file in css folder of minimum pro child theme folder. Now open the front-page.php file on Notepad++ and find this “minimum_front_page_enqueue_scripts” function. Replacing all backstretch scripts by Flexslider JS/CSS scripts there. So function will be look like this:
function minimum_front_page_enqueue_scripts() { wp_enqueue_style( 'flexslider-css', get_bloginfo('stylesheet_directory') . '/css/flexslider.css', array(), '1.0', 'all' ); wp_register_script( 'flexslider-js', get_bloginfo('stylesheet_directory') . '/js/jquery.flexslider-min.js', array( 'jquery' ) ); wp_enqueue_script( 'flexslider-js' ); //* Add custom body class add_filter( 'body_class', 'minimum_add_body_class' ); }
Now adding the slider after header by genesis_after_header hook. So add the following new codes in front-page.php file:
// Don't include the opening PHP tag add_action('genesis_after_header', 'gdSlider', 5); function gdSlider($atts){ $args = array('posts_per_page' => -1, 'post_type' => 'slider'); $slider = new WP_Query($args); if( $slider->have_posts() ){ $sld= '<div class="flexslider"> <ul class="slides">' . "\n"; while( $slider->have_posts() ){ $slider->the_post(); $hideContent = get_post_meta(get_the_ID(), '_hide_content' ,true); $readmoreTxt = get_post_meta(get_the_ID(), '_readmore_txt' ,true); $readmoreLink = get_post_meta(get_the_ID(), '_readmore_url' ,true); $img = genesis_get_image( array( 'format' => 'html', 'size' => 'slider', 'context' => 'archive', 'attr' => array ( 'class' => 'slider-image' ) ) ); if( $img ){ $sld .= '<li>' . $img . "\n" ; //'<h2 class="slider-title">' . the_title('', '', false) . '</h2>'. "\n" . if( $hideContent != "yes"){ $sld .= '<div class="flex-caption">' . "\n" . '<h2 class="title">' . get_the_title() . '</h2>' . "\n" . '<p class="caption">' . get_the_content() . ( ($readmoreLink != '') ? '<br/><a href="'.$readmoreLink.'" class="read-more">'.$readmoreTxt.'</a>' : '' ) . '</p>' . "\n" . '</div>' . "\n"; } $sld .='</li>' . "\n"; } } $sld .= '</ul>' . "\n"; $sld .= '</div>' . "\n"; $sld .= '<script type="text/javascript"> jQuery(document).ready(function() { jQuery(".flexslider").flexslider({ selector: ".slides > li", animation: "fade", slideshow: true, slideshowSpeed: 9000, animationSpeed: 1050, controlNav: true, directionNav: false, pauseOnHover: false }); }); </script>' . "\n"; } wp_reset_query(); echo $sld; }
Step 4: Styling
Add the following CSS in style.css file
.minimum .flexslider { background: #fff; border: none; border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; box-shadow: none; -webkit-box-shadow: none; -moz-box-shadow: none; margin: 0 auto; padding: 0; position: relative; width: 100%; overflow: hidden; top: 60px; } @media only screen and (min-width: 768px) { .flex-caption{ background: rgba(0,0,0,0.75); bottom: 0px; color: #FFF; letter-spacing: 1px; max-width: 350px; padding: 20px; position: absolute; right:0; } .flex-caption h2.title{ color: #FFF; text-transform: uppercase; } .flex-caption a.read-more{ border: 1px solid #FFF; clear: both; color: #FFF; cursor: pointer; display: table; padding: 10px 28px; margin: 10px 0; } .minimum .flex-control-nav { position: absolute; left: 10px; text-align: center; top: 40%; width: auto; z-index: 20; } .minimum .flex-control-nav li { display: block; margin: 0 0 1px; } .minimum .flex-control-paging li a { border-radius: 0; -webkit-border-radius: 0; -moz-border-radius: 0; display: block; height: 25px; width: 4px; } } @media only screen and (max-width: 1023px) { .minimum .flexslider { top: 0; } }
Go to line no 485 and replace the current CSS by this
.minimum .site-tagline { margin-top: 0!important; }