PHP Developer

Thursday, 16 November 2017

Create custom carousel slider with custom post type using Slick slider library

Create custom carousel slider with custom post type using Slick slider library



<!------- Create Custom post Type Crousel Slider Using Slick Slider ---------->
<?php
$team_slider_html = '';

$args = array(
    'post_type' => 'product',
    'post_status' => 'publish',
    'posts_per_page' => 10,
);
$query = new WP_Query( $args );
$team_slider_html .= '<section class="center slider hometeam_slider">';
while ( $query->have_posts() ) : $query->the_post();
    if (has_post_thumbnail( get_the_ID() ) ){
        $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'single-post-thumbnail' );
        $featured_image = $image[0];
    }else{
        $featured_image = site_url().'/wp-content/uploads/2017/10/report-covers.png';
    }
    $team_slider_html .= '<div class="single_team_slide"><div class="single_slide_inner">';
    $team_slider_html .= '<div class="team_member_image"><img src="'.$featured_image.'"></div>';
    $team_slider_html .= '<div class="team_member_excerpt">'.get_the_excerpt().'</div>';
    $team_slider_html .= '<div class="team_member_name">'.get_the_title().'</div>';
    $team_slider_html .= '<div class="team_member_designation">'.get_post_meta( get_the_ID(), '_position', true ).'</div>';
    $team_slider_html .= '</div></div>';
endwhile;
$team_slider_html .= '</section>';

echo $team_slider_html;
?>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.min.css'>
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick-theme.min.css'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.min.js'></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script>
jQuery(document).on('ready', function() {
    jQuery(".center").slick({
        dots: true,
        infinite: true,
        centerMode: true,
        autoplay: true,
        arrows: true,
        slidesToShow: 3,
        slidesToScroll: 1
    });
});
</script>


Create Custom Post slider with Post title in thumbnail Using Slick Slider Library

Create Custom Post slider with Post title in thumbnail Using Slick Slider Library



<!------ Create Custom post Slider With Thumbnail Using Slick Slider -------->
<?php
$tax_query4 = array(array('taxonomy' => 'products_type','field' => 'slug','terms' => array('patent-reports')));
$args4 = array(
        'post_type' => 'product',
        'post_status' => 'publish',
        'posts_per_page' => 5,
        'tax_query' => $tax_query4
    );
$query4 = new WP_Query( $args4 );

$new_patents_slider = '';
$new_patents_slider .= '<div class="main">';
$new_patents_slider .= '<div class="slider patents-for smart_patents">';
while ( $query4->have_posts() ) : $query4->the_post();
    if (has_post_thumbnail( get_the_ID() ) ){
        $image = wp_get_attachment_image_src( get_post_thumbnail_id( get_the_ID() ), 'single-post-thumbnail' );
        $featured_image = $image[0];
    }else{
        $featured_image = site_url().'/wp-content/uploads/2017/10/report-covers.png';
    }
    $new_patents_slider .= '<div class="img-responsive main-slide-single">';
    $new_patents_slider .= '<div class="main-slide-left"><img src="'.$featured_image.'"></div>';
    $new_patents_slider .= '<div class="main-slide-right">';
    $new_patents_slider .= '<div class="slider_title">'.get_the_title().'</div>';
    $new_patents_slider .= '<div class="slider_excerpt">'.get_the_excerpt().'</div>';
    $new_patents_slider .= '<a href="'.get_the_permalink().'">Read More</a>';
    $new_patents_slider .= '</div>';
    $new_patents_slider .= '</div>';
endwhile;
$new_patents_slider .= '</div>';
$new_patents_slider .= '<div class="slider patents-nav smart_patents">';
while ( $query4->have_posts() ) : $query4->the_post();
    $new_patents_slider .= '<div>';
    $new_patents_slider .= '<div class="img-responsive">';
    $new_patents_slider .= '<div class="thumb-title">';
    if(strlen(get_the_title()) > 50){
        $new_patents_slider .= substr(get_the_title(), 0,50).' ...';
    }else{
        $new_patents_slider .= get_the_title();
    }
    $new_patents_slider .= '</div>';
    $new_patents_slider .= '<a href="'.get_the_permalink().'">read more</a>';
    $new_patents_slider .= '</div>';
    $new_patents_slider .= '</div>';
endwhile;
$new_patents_slider .= '</div>';
$new_patents_slider .= '</div>';

echo $new_patents_slider;
?>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css">
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.min.css'>
<link rel='stylesheet prefetch' href='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick-theme.min.css'>
<script src='https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.5.9/slick.min.js'></script>
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>

<script>

var noof_sliders = jQuery(".slick-initialized.slick-slider").length;
setTimeout(function(){
    for (i = 0; i < noof_sliders; i++) {
        jQuery(".slick-initialized.slick-slider")[i].slick.refresh();
    }
}, .5);
    
/***** Patents Tab jQuery (START) *****/
jQuery('.patents-for').slick({
    slidesToShow: 1,
    slidesToScroll: 1,
    arrows: false,
    fade: true,
    autoplay: true,
    asNavFor: '.patents-nav'
});
jQuery('.patents-nav').slick({
    slidesToShow: 3,
    slidesToScroll: 1,
    asNavFor: '.patents-for',
    dots: false,
    focusOnSelect: true
});
/***** Patents Tab jQuery (END) *****/

</script>


WordPress Custom Load More Posts Button Without Plugin

WordPress Custom Load More Posts Without Plugin



STEP 1 : Insert this code in functions.php file

<?php
/************ Pagination Function START *************/
function wp_pagination() {
    global $wp_query;
    $big = 12345678;
    $page_format = paginate_links( array(
        'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
        'format' => '?paged=%#%',
        'current' => max( 1, get_query_var('paged') ),
        'total' => $wp_query->max_num_pages,
        'type'  => 'array'
    ) );
    if( is_array($page_format) ) {
        $paged = ( get_query_var('paged') == 0 ) ? 1 : get_query_var('paged');
        echo '<div class="pagination"><ul>';
        echo '<li><span>'. $paged . ' of ' . $wp_query->max_num_pages .'</span></li>';
        foreach ( $page_format as $page ) {
                echo "<li>$page</li>";
        }
       echo '</ul></div>';
    }
}
/************ Pagination Function END *************/
?>

STEP 2 : Template code to get posts with Load morebutton

<?php
   $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
   query_posts(array(  
       'post_type' => 'product', //Post Type
       'post_status' => 'publish', //Post Status
       'paged' => $paged 
   ));
   ?>
<?php if (have_posts()) : ?>
    <section id="posts">
       <?php while (have_posts()) : the_post(); ?>
       <article class="post"><?php echo get_the_title();?></article><br>
       <?php endwhile; ?>
    </section>
    <?php if ( $wp_query->max_num_pages > 1 ) : ?>
        <nav class="load_more">
           <?php next_posts_link( 'Load More' ); ?>
        </nav>
        <script type="text/javascript">
            jQuery(document).ready(function(){
                jQuery('.load_more a').live('click', function(e){
                    e.preventDefault();
                    var link = jQuery(this).attr('href');
                    jQuery('.load_more').html('<span class="loader">Loading More Posts...</span>');
                    jQuery.get(link, function(data) {
                        var post = jQuery("#posts .post ", data);
                        jQuery('#posts').append(post);
                    });
                    jQuery('.load_more').load(link+' .load_more a');
                });
            });
        </script>
    <?php endif;  ?>
<?php endif;  ?>


Monday, 13 November 2017

How to create a Custom Widget in WordPress

How to create a Custom Widget in WordPress


<?php
//Create custom widget 
class Custom_latest_post_Widget extends WP_Widget {
    function __construct() {
        parent::__construct(
            'custom_latest_post_Widget', // Base ID
            'Latest Post List', // Name
            array('description' => __( 'Displays your latest posts. Outputs the post thumbnail, title and date per listing'))
        );
    }
    function widget($args, $instance) { //output
        extract( $args );
        // these are the widget options
        $title = apply_filters('widget_title', $instance['title']);
        $numberOfListings = $instance['numberOfListings'];
        $post_types = $instance['post_types'];
        $thumbnail_image = $instance['thumbnail_image'];
        $enable_excerpt = $instance['enable_excerpt'];
        $excerpt_length = $instance['excerpt_length'];
        $publish_date = $instance['publish_date'];
        $read_more_link = $instance['read_more_link'];
        $read_more_text = $instance['read_more_text'];

        echo $before_widget;
        // Check if title is set
        if ( $title ) {
            echo $before_title . $title . $after_title;
        }
        $this->getRealtyListings($numberOfListings, $post_types, $thumbnail_image, $enable_excerpt, $excerpt_length, $publish_date, $read_more_link, $read_more_text);
        echo $after_widget;
    }

    function update($new_instance, $old_instance) {
        $instance = $old_instance;
        $instance['title'] = strip_tags($new_instance['title']);
        $instance['post_types'] = strip_tags($new_instance['post_types']);
        $instance['numberOfListings'] = strip_tags($new_instance['numberOfListings']);
        $instance['thumbnail_image'] = strip_tags($new_instance['thumbnail_image']);
        $instance['enable_excerpt'] = strip_tags($new_instance['enable_excerpt']);
        $instance['excerpt_length'] = strip_tags($new_instance['excerpt_length']);
        $instance['publish_date'] = strip_tags($new_instance['publish_date']);
        $instance['read_more_link'] = strip_tags($new_instance['read_more_link']);
        $instance['read_more_text'] = strip_tags($new_instance['read_more_text']);
        return $instance;
    }
    
    // widget form creation
    function form($instance) {

// Check values
if( $instance) {
$title = esc_attr($instance['title']);
$numberOfListings = esc_attr($instance['numberOfListings']);
$post_types = esc_attr($instance['post_types']);
$thumbnail_image = esc_attr($instance['thumbnail_image']);
$enable_excerpt = esc_attr($instance['enable_excerpt']);
$excerpt_length = esc_attr($instance['excerpt_length']);
$publish_date = esc_attr($instance['publish_date']);
$read_more_link = esc_attr($instance['read_more_link']);
$read_more_text = esc_attr($instance['read_more_text']);
} else {
$title = '';
$numberOfListings = '';
$post_types = '';
$thumbnail_image = '';
$enable_excerpt = '';
$excerpt_length = '';
$publish_date = '';
$read_more_link = '';
$read_more_text = '';
}
?>
        <p>
            <label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('post_types'); ?>"><?php _e('Post Type:', 'custom_latest_post_Widget'); ?></label>
            <select id="<?php echo $this->get_field_id('post_types'); ?>"  name="<?php echo $this->get_field_name('post_types'); ?>">
               <?php $post_types_array = array('post', 'news', 'product');
                  foreach($post_types_array as $single_post_types){ ?>
               <option <?php echo $single_post_types == $post_types ? 'selected="selected"' : '';?> value="<?php echo $single_post_types;?>"><?php echo $single_post_types; ?></option>
               <?php } ?>
            </select>
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('numberOfListings'); ?>"><?php _e('Number of Listings:', 'custom_latest_post_Widget'); ?></label>
            <select id="<?php echo $this->get_field_id('numberOfListings'); ?>"  name="<?php echo $this->get_field_name('numberOfListings'); ?>">
               <?php for($x=1;$x<=10;$x++): ?>
               <option <?php echo $x == $numberOfListings ? 'selected="selected"' : '';?> value="<?php echo $x;?>"><?php echo $x; ?></option>
               <?php endfor;?>
            </select>
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('thumbnail_image'); ?>"><?php _e('Show Thumbnail Image : ', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('thumbnail_image'); ?>" type="checkbox" name="<?php echo $this->get_field_name('thumbnail_image'); ?>" <?php if((!empty($thumbnail_image)) && ($thumbnail_image == 'thumb_image')){echo 'checked';}?> value="thumb_image">
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('enable_excerpt'); ?>"><?php _e('Enable Excerpt : ', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('enable_excerpt'); ?>" type="checkbox" name="<?php echo $this->get_field_name('enable_excerpt'); ?>" <?php if((!empty($enable_excerpt)) && ($enable_excerpt == 'show_excerpt')){echo 'checked';}?> value="show_excerpt">
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('excerpt_length'); ?>"><?php _e('Excerpt Length:', 'custom_latest_post_Widget'); ?></label>
            <select id="<?php echo $this->get_field_id('excerpt_length'); ?>"  name="<?php echo $this->get_field_name('excerpt_length'); ?>">
               <?php for($x=10;$x<=150;$x=$x+10): ?>
               <option <?php echo $x == $excerpt_length ? 'selected="selected"' : '';?> value="<?php echo $x;?>"><?php echo $x; ?></option>
               <?php endfor;?>
            </select>
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('publish_date'); ?>"><?php _e('Publish Date : ', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('publish_date'); ?>" type="checkbox" name="<?php echo $this->get_field_name('publish_date'); ?>" <?php if((!empty($publish_date)) && ($publish_date == 'date')){echo 'checked';}?> value="date">
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('read_more_link'); ?>"><?php _e('Read More Link : ', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('read_more_link'); ?>" type="checkbox" name="<?php echo $this->get_field_name('read_more_link'); ?>" <?php if((!empty($read_more_link)) && ($read_more_link == 'more_link')){echo 'checked';}?> value="more_link">
         </p>
         <p>
            <label for="<?php echo $this->get_field_id('read_more_text'); ?>"><?php _e('Read More Text : ', 'custom_latest_post_Widget'); ?></label>
            <input class="widefat" id="<?php echo $this->get_field_id('read_more_text'); ?>" name="<?php echo $this->get_field_name('read_more_text'); ?>" type="text" value="<?php echo $read_more_text; ?>" placeholder="Read More" />
         </p>
<?php
    }

    function getRealtyListings($numberOfListings, $post_types, $thumbnail_image, $enable_excerpt, $excerpt_length, $publish_date, $read_more_link, $read_more_text) { //html
        global $post;
        add_image_size( 'custom_latest_post_Widget_size', 85, 45, false );
        /*
        if($post_types == 'product'){
            $tax_query = array(array('taxonomy' => 'products_type','field' => 'slug','terms' => 'market-reports'));
        }else{
            $tax_query = '';
        }
        */

        $args = array(
            'post_type' => $post_types,
            'posts_per_page' => $numberOfListings,
            //'tax_query' => $tax_query
        );

        $listings = new WP_Query($args);

        //$listings->query('post_type='.$post_types.'&posts_per_page=' . $numberOfListings . $new_var );
        if($listings->found_posts > 0) {
            echo '<ul class="custom_latest_post_Widget">';

            while ($listings->have_posts()) {
                $listings->the_post();
                $image = (has_post_thumbnail($post->ID)) ? get_the_post_thumbnail($post->ID, 'realty_widget_size') : '<div class="noThumb"></div>';
                $listItem = '<li>';
                if(!empty($thumbnail_image)){
                    $listItem .= '<div class="list_left_thumb">';
                    $listItem .= $image;
                    $listItem .= '</div>';
                }
                $listItem .= '<div class="list_right_thumb">';
                $listItem .= '<a href="' . get_permalink() . '">';
                $listItem .= get_the_title() . '</a>';
                if(!empty($enable_excerpt)){
                    if(!empty($excerpt_length)){
                        $length = $excerpt_length;
                    }else{
                        $length = 100;
                    }
                    $listItem .= '<div class="list_excerpt">';
                    $listItem .= substr(get_the_excerpt(), 0, $length).'...';
                    $listItem .= '</div>';
                }
                if(!empty($publish_date)){
                    $listItem .= '<div class="list_publish_date">'.date('M d Y', strtotime(get_the_date())).'</div>';
                }
                if(!empty($read_more_link)){
                    $listItem .= '<div class="list_link"><a href="'.get_the_permalink().'">';
                    if(!empty($read_more_text)){
                        $listItem .= $read_more_text;
                    }else{
                        $listItem .= 'Read More';
                    }
                    $listItem .= '</a></div>';
                }
                $listItem .= '</div>';
                $listItem .= '</li>'; 
                echo $listItem; 
            }

            echo '</ul>';
            wp_reset_postdata();
        }else{
            echo '<p style="padding:25px;">No listing found</p>';
        } 
    }

} //end class custom_latest_post_Widget
register_widget('Custom_latest_post_Widget');
?>