Guest User

Untitled

a guest
Jul 23rd, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.91 KB | None | 0 0
  1. <?php
  2. $data = c27()->merge_options([
  3. 'template' => 'grid',
  4. 'posts_per_page' => 6,
  5. 'category' => '',
  6. 'tag' => '',
  7. 'region' => '',
  8. 'include' => '',
  9. 'listing_types' => '',
  10. 'is_edit_mode' => false,
  11. 'columns' => ['lg' => 3, 'md' => 3, 'sm' => 2, 'xs' => 1],
  12. 'order_by' => 'date',
  13. 'order' => 'DESC',
  14. 'behavior' => 'default',
  15. 'show_promoted_badge' => 'yes',
  16. 'query_method' => 'filters',
  17. 'query_string' => '',
  18. ], $data);
  19.  
  20. if ( $data['query_method'] === 'query_string' ) {
  21. if ( ! ( $query_string = parse_url( $data['query_string'], PHP_URL_QUERY ) ) ) {
  22. return false;
  23. }
  24.  
  25. if ( ! ( $query_args = wp_parse_args( $query_string ) ) ) {
  26. return false;
  27. }
  28.  
  29. if ( ! empty( $query_args['pg'] ) ) {
  30. $query_args['page'] = max( 0, absint( $query_args['pg'] ) - 1 );
  31. }
  32.  
  33. $aliases = array_merge(
  34. \MyListing\Src\Listing::$aliases,
  35. [
  36. 'date_from' => 'job_date_from',
  37. 'date_to' => 'job_date_to',
  38. 'lat' => 'search_location_lat',
  39. 'lng' => 'search_location_lng',
  40. ]
  41. );
  42.  
  43. foreach ( $query_args as $key => $query_arg ) {
  44. if ( ! empty( $aliases[ $key ] ) ) {
  45. $query_args[ $aliases[ $key ] ] = $query_arg;
  46. unset( $query_args[ $key ] );
  47. }
  48. }
  49.  
  50. $listings_query = \MyListing\Src\Queries\Explore_Listings::instance()->run( [
  51. 'listing_type' => ! empty( $query_args['type'] ) ? $query_args['type'] : false,
  52. 'form_data' => c27()->merge_options( [
  53. 'per_page' => $data['posts_per_page'],
  54. ], (array) $query_args ),
  55. 'return_query' => true,
  56. ] );
  57.  
  58. if ( ! $listings_query instanceof \WP_Query ) {
  59. return false;
  60. }
  61.  
  62. $listings = $listings_query->posts;
  63. } else {
  64.  
  65. add_filter( 'posts_join', 'listings_feed_priority_field_join', 30, 2 );
  66. add_filter( 'posts_orderby', 'listings_feed_priority_field_orderby', 30, 2 );
  67.  
  68. // Query Method: Filters
  69. $args = [
  70. 'post_type' => 'job_listing',
  71. 'post_status' => 'publish',
  72. 'posts_per_page' => $data['posts_per_page'],
  73. 'ignore_sticky_posts' => false,
  74. 'meta_query' => [],
  75. 'tax_query' => [],
  76. ];
  77.  
  78. // Filter by 'job_listing_category' taxonomy.
  79. if ( $data['category'] ) {
  80. $args['tax_query'][] = [
  81. 'taxonomy' => 'job_listing_category',
  82. 'terms' => $data['category'],
  83. 'field' => 'term_id',
  84. ];
  85. }
  86.  
  87. // Filter by 'region' taxonomy.
  88. if ( $data['region'] ) {
  89. $args['tax_query'][] = [
  90. 'taxonomy' => 'region',
  91. 'terms' => $data['region'],
  92. 'field' => 'term_id',
  93. ];
  94. }
  95.  
  96. // Filter by 'case27_job_listing_tags' taxonomy.
  97. if ( $data['tag'] ) {
  98. $args['tax_query'][] = [
  99. 'taxonomy' => 'case27_job_listing_tags',
  100. 'terms' => $data['tag'],
  101. 'field' => 'term_id',
  102. ];
  103. }
  104.  
  105. // Only display the selected listings.
  106. if ( $data['include'] ) {
  107. $args['post__in'] = $data['include'];
  108. }
  109.  
  110. // Filter by the listing type.
  111. if ( $data['listing_types'] ) {
  112. $args['meta_query']['c27_listing_type_clause'] = [
  113. 'key' => '_case27_listing_type',
  114. 'value' => $data['listing_types'],
  115. 'compare' => 'IN',
  116. ];
  117. }
  118.  
  119. if ( $data['order_by'] ) {
  120. if ($data['order_by'][0] === '_') {
  121. // Order by meta key.
  122. $args['meta_query']['c27_orderby_clause'] = [
  123. 'key' => $data['order_by'],
  124. 'compare' => 'EXISTS',
  125. 'type' => 'DECIMAL(10, 2)',
  126. ];
  127.  
  128. $args['orderby'] = 'c27_orderby_clause';
  129. } else {
  130. $args['orderby'] = $data['order_by'];
  131. }
  132. }
  133.  
  134. if ( ! in_array( $data['order'], ['ASC', 'DESC'] ) ) {
  135. $data['order'] = 'DESC';
  136. }
  137.  
  138. $args['order'] = $data['order'];
  139.  
  140. if ( $data['show_promoted_badge'] !== 'yes' ) {
  141. remove_filter( 'mylisting/preview-card/show-badge', [ mylisting()->promotions(), 'show_promoted_badge' ], 30 );
  142. }
  143.  
  144. $result = new \WP_Query( apply_filters( 'mylisting/sections/listing-feed/args', $args, $data ) );
  145.  
  146. $listings = $result->posts;
  147.  
  148. remove_filter( 'posts_join', 'listings_feed_priority_field_join', 30 );
  149. remove_filter( 'posts_orderby', 'listings_feed_priority_field_orderby', 30 );
  150. }
  151. ?>
  152.  
  153. <?php if (!$data['template'] || in_array( $data['template'], ['grid', 'fluid-grid'] ) ): ?>
  154. <section class="i-section listing-feed">
  155. <div class="container-fluid">
  156. <div class="row section-body grid">
  157. <?php foreach ($listings as $listing): $listing->_c27_show_promoted_badge = $data['show_promoted_badge'] == true; ?>
  158. <?php c27()->get_partial('listing-preview', [
  159. 'listing' => $listing,
  160. 'wrap_in' => sprintf(
  161. 'col-lg-%1$d col-md-%2$d col-sm-%3$d col-xs-%4$d reveal grid-item',
  162. 12 / absint( $data['columns']['lg'] ), 12 / absint( $data['columns']['md'] ),
  163. 12 / absint( $data['columns']['sm'] ), 12 / absint( $data['columns']['xs'] )
  164. ),
  165. ]) ?>
  166. <?php endforeach ?>
  167. </div>
  168. </div>
  169. </section>
  170. <?php endif ?>
  171.  
  172. <?php if ($data['template'] == 'carousel'): ?>
  173. <section class="i-section listing-feed-2">
  174. <div class="container">
  175. <div class="row section-body">
  176. <div class="owl-carousel listing-feed-carousel">
  177. <?php foreach ($listings as $listing): $listing->_c27_show_promoted_badge = $data['show_promoted_badge'] == true; ?>
  178. <div class="item reveal">
  179. <?php c27()->get_partial('listing-preview', ['listing' => $listing]) ?>
  180. </div>
  181. <?php endforeach ?>
  182.  
  183. <?php if (count($listings) <= 3): ?>
  184. <?php foreach (range(0, absint(count($listings) - 4)) as $i): ?>
  185. <div class="item reveal c27-blank-slide"></div>
  186. <?php endforeach ?>
  187. <?php endif ?>
  188. </div>
  189. </div>
  190. <div class="lf-nav <?php echo $data['invert_nav_color'] ? 'lf-nav-light' : '' ?>">
  191. <ul>
  192. <li>
  193. <a href="#" class="listing-feed-prev-btn">
  194. <i class="material-icons">keyboard_arrow_left</i>
  195. </a>
  196. </li>
  197. <li>
  198. <a href="#" class="listing-feed-next-btn">
  199. <i class="material-icons">keyboard_arrow_right</i>
  200. </a>
  201. </li>
  202. </ul>
  203. </div>
  204. </div>
  205. </section>
  206. <?php endif ?>
  207.  
  208. <?php if ($data['is_edit_mode']): ?>
  209. <script type="text/javascript">case27_ready_script(jQuery);</script>
  210. <?php endif ?>
Add Comment
Please, Sign In to add comment