PageRenderTime 55ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/wp-content/themes/mercury/includes/codeless_builder/shortcodes/cl_blog.php

https://bitbucket.org/manojgautam/mercury
PHP | 238 lines | 150 code | 71 blank | 17 comment | 81 complexity | fc8966fab55a3eaca38ba5c8d95ea95e MD5 | raw file
Possible License(s): MIT, Apache-2.0, GPL-3.0
  1. <?php
  2. if ( ! defined( 'ABSPATH' ) ) {
  3. die( '-1' );
  4. }
  5. $output = '';
  6. $atts = cl_get_attributes( $this->getShortcode(), $atts );
  7. extract( $atts );
  8. wp_reset_postdata();
  9. // Element ID
  10. $blog_id = 'cl_blog_' . str_replace( ".", '-', uniqid("", true) );
  11. if( $carousel )
  12. wp_enqueue_style('owl-carousel', CODELESS_BASE_URL.'css/owl.carousel.min.css' );
  13. /* Image Filters */
  14. if( $image_filter != 'normal' )
  15. wp_enqueue_style('codeless-image-fitlers', CODELESS_BASE_URL.'css/codeless-image-filters.css' );
  16. // Vars of portfolio
  17. $categories = cl_atts_to_array($categories);
  18. $posts_per_page_ = (int) $posts_per_page;
  19. // Blog News Posts Per page
  20. if( $blog_style == 'news' && $blog_news == 'grid_1' )
  21. $posts_per_page_ = 4;
  22. if( $blog_style == 'news' && $blog_news == 'grid_2' )
  23. $posts_per_page_ = 5;
  24. if( $blog_style == 'news' && $blog_news == 'grid_3' )
  25. $posts_per_page_ = 4;
  26. // Build New Query
  27. $new_query = array( 'orderby' => $orderby,
  28. 'order' => $order,
  29. 'posts_per_page' => $posts_per_page
  30. );
  31. if( ! empty( $categories ) && is_array( $categories ) && count( $categories ) > 0 && !empty($categories[0]) )
  32. $new_query['cat'] = $categories;
  33. $paged_attr = 'paged';
  34. if( is_front_page() )
  35. $paged_attr = 'page';
  36. if( get_query_var( $paged_attr ) )
  37. $new_query['paged'] = get_query_var( $paged_attr );
  38. /* Used for related posts */
  39. if( isset( $related ) && (int) $related != 0 ){
  40. $tags = wp_get_post_tags($related);
  41. if ($tags){
  42. $first_tag = $tags[0]->term_id;
  43. $new_query = array(
  44. 'tag__in' => array($first_tag),
  45. 'post__not_in' => array($related),
  46. 'posts_per_page' => $posts_per_page,
  47. 'caller_get_posts'=>1
  48. );
  49. }
  50. }
  51. global $cl_from_element;
  52. if( $blog_style == 'masonry' ){
  53. $blog_style = 'grid';
  54. $cl_from_element['blog_masonry'] = true;
  55. }
  56. // Live Filters
  57. if( $blog_filters ){
  58. if( isset($_GET['blog_sort_by']) ){
  59. $blog_sort_by = $_GET['blog_sort_by'];
  60. if( $blog_sort_by == 'newest' || $blog_sort_by == '' ){
  61. $new_query['orderby'] = 'date';
  62. $new_query['order'] = 'DESC';
  63. }
  64. if( $blog_sort_by == 'oldest' ){
  65. $new_query['orderby'] = 'date';
  66. $new_query['order'] = 'ASC';
  67. }
  68. if( $blog_sort_by == 'comments' ){
  69. $new_query['orderby'] = 'comment_count';
  70. $new_query['order'] = 'DESC';
  71. }
  72. if( $blog_sort_by == 'reads' ){
  73. $new_query['orderby'] = 'meta_value_num';
  74. $new_query['meta_key'] = '_codeless_post_like';
  75. $new_query['order'] = 'DESC';
  76. }
  77. if( $blog_sort_by == 'popular' ){
  78. $new_query['orderby'] = 'meta_value_num';
  79. $new_query['meta_key'] = '_codeless_share_count';
  80. $new_query['order'] = 'DESC';
  81. }
  82. }
  83. }
  84. $cl_from_element['blog_style'] = $blog_style;
  85. $cl_from_element['blog_grid_layout'] = $blog_grid_layout;
  86. $cl_from_element['blog_pagination'] = $blog_pagination;
  87. $cl_from_element['blog_distance'] = $distance;
  88. $cl_from_element['blog_button_style'] = $blog_pagination;
  89. $cl_from_element['blog_animation'] = $blog_pagination;
  90. $cl_from_element['blog_excerpt_length'] = 29;
  91. $cl_from_element['blog_animation'] = $blog_animation;
  92. $cl_from_element['blog_news'] = $blog_news;
  93. $cl_from_element['blog_image_filter'] = $image_filter;
  94. $cl_from_element['blog_lazyload'] = $blog_image_lazyload;
  95. $cl_from_element['blog_from_element'] = true;
  96. $cl_from_element['blog_image_size'] = $image_size;
  97. $cl_from_element['blog_related_posts'] = $related;
  98. if( $blog_style == 'masonry' ){
  99. $cl_from_element['blog_entry_meta_author'] = false;
  100. $cl_from_element['blog_entry_meta_categories'] = false;
  101. }
  102. add_filter( 'excerpt_length', 'codeless_custom_excerpt_length', 999 );
  103. $the_query = new WP_Query( $new_query );
  104. // Display posts
  105. if ( $the_query->have_posts() ) :
  106. ?>
  107. <?php $extra_style = ' margin-left:-'.$distance.'px; margin-right:-'.$distance.'px; '; ?>
  108. <div id="<?php echo esc_attr( $blog_id ) ?>" class="cl_blog cl-element <?php echo esc_attr( $this->generateClasses('.cl_blog') ) ?>" <?php $this->generateStyle('.cl_blog', $extra_style, true) ?>>
  109. <?php if( $blog_filters ): ?>
  110. <div class="blog-filters">
  111. <?php if( $blog_style == 'grid' || $blog_style == 'masonry' ): ?>
  112. <div class="grid-options">
  113. <label><?php esc_attr_e('Show', 'june') ?></label>
  114. <div>
  115. <a class="<?php if( $blog_grid_layout == 2 ) echo 'active'; ?>" data-grid-cols="2" href="#">2</a>
  116. <a class="<?php if( $blog_grid_layout == 3 ) echo 'active'; ?>" data-grid-cols="3" href="#">3</a>
  117. <a class="<?php if( $blog_grid_layout == 4 ) echo 'active'; ?>" data-grid-cols="4" href="#">4</a>
  118. </div>
  119. </div>
  120. <?php endif; ?>
  121. <div class="title">
  122. <h2><?php echo esc_attr($blog_title); ?></h2>
  123. </div>
  124. <?php if( $blog_style == 'grid' || $blog_style == 'masonry' ): ?>
  125. <div class="sort-options">
  126. <div>
  127. <span><?php esc_attr_e('Sort by', 'june') ?></span>
  128. <select id="blog_sort_by" data-url="<?php echo get_permalink() ?>">
  129. <option <?php if( $blog_sort_by == 'newest' || $blog_sort_by == '' ) echo 'selected' ?> value="newest">Newest First</option>
  130. <option <?php if( $blog_sort_by == 'popular' ) echo 'selected' ?> value="popular">Popularity</option>
  131. <option <?php if( $blog_sort_by == 'reads' ) echo 'selected' ?> value="reads">Reads</option>
  132. <option <?php if( $blog_sort_by == 'oldest' ) echo 'selected' ?> value="oldest">Oldest First</option>
  133. <option <?php if( $blog_sort_by == 'comments' ) echo 'selected' ?> value="comments">Most Comments</option>
  134. </select>
  135. </div>
  136. </div>
  137. <?php endif; ?>
  138. </div>
  139. <?php endif; ?>
  140. <div class="blog-entries <?php echo esc_attr( $this->generateClasses('.cl_blog > .blog-entries') ) ?> <?php echo esc_attr( codeless_extra_classes( 'blog_entries' ) ) ?>" <?php echo codeless_extra_attr( 'blog_entries' ) ?> <?php $this->generateStyle('.cl_blog > .blog-entries', '', true) ?>>
  141. <?php
  142. // Loop counter
  143. $i = 0;
  144. codeless_loop_counter($i);
  145. // Start loop
  146. while ( $the_query->have_posts() && $posts_per_page_ >= ( $i + 1 ) ) : $the_query->the_post();
  147. if( ! has_post_thumbnail() && ( $blog_style == 'media' || $blog_style == 'news' ) )
  148. continue;
  149. codeless_loop_counter(++$i);
  150. /*
  151. * Get Blog Template Style
  152. * Codeless_blog_style returns the style selected
  153. * from Theme Options or a custom filter
  154. */
  155. get_template_part( 'template-parts/blog/style', codeless_blog_style() );
  156. // End loop
  157. endwhile; ?>
  158. </div><!-- #blog-entries -->
  159. <?php
  160. // Display post pagination (next/prev - 1,2,3,4..)
  161. if( $blog_pagination )
  162. codeless_blog_pagination( $the_query ) ;
  163. wp_reset_postdata();
  164. else : ?>
  165. <article class="content-none"><?php esc_html_e( 'No Posts found.', 'june' ); ?></article>
  166. <?php endif; ?>
  167. </div><!-- .cl_blog -->