frontend.php 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. <?php
  2. // Opening Wrapper
  3. echo '<div class="fl-woocommerce-' . esc_attr( $settings->layout ) . '">';
  4. // Shortcodes
  5. $pages = array(
  6. 'cart' => '[woocommerce_cart]',
  7. 'checkout' => '[woocommerce_checkout]',
  8. 'tracking' => '[woocommerce_order_tracking]',
  9. 'account' => '[woocommerce_my_account]',
  10. );
  11. // WooCommerce Pages
  12. if ( isset( $pages[ $settings->layout ] ) ) {
  13. echo $pages[ $settings->layout ]; // xss ok
  14. }
  15. elseif ( $settings->layout == 'product' ) {
  16. add_filter( 'post_class', array( $module, 'single_product_post_class' ) );
  17. echo '[product id="' . esc_attr( $settings->product_id ) . '"]';
  18. remove_filter( 'post_class', array( $module, 'single_product_post_class' ) );
  19. } // Single Product Page
  20. elseif ( $settings->layout == 'product_page' ) {
  21. add_filter( 'post_class', array( $module, 'single_product_post_class' ) );
  22. echo '[product_page id="' . esc_attr( $settings->product_id ) . '"]';
  23. remove_filter( 'post_class', array( $module, 'single_product_post_class' ) );
  24. } // Add to Cart Button
  25. elseif ( $settings->layout == 'add-cart' ) {
  26. echo '[add_to_cart id="' . esc_attr( $settings->product_id ) . '" style=""]';
  27. } // Categories
  28. elseif ( $settings->layout == 'categories' ) {
  29. echo '[product_categories parent="' . esc_attr( $settings->parent_cat_id ) . '" columns="' . esc_attr( $settings->cat_columns ) . '"]';
  30. } // Multiple Products
  31. elseif ( $settings->layout == 'products' ) {
  32. add_filter( 'post_class', array( $module, 'products_post_class' ) );
  33. $query_args = array(
  34. 'post_type' => 'product',
  35. 'post_status' => 'publish',
  36. 'ignore_sticky_posts' => 1,
  37. 'posts_per_page' => $settings->num_products,
  38. 'orderby' => $settings->orderby,
  39. 'order' => $settings->order,
  40. 'meta_query' => WC()->query->get_meta_query(),
  41. 'tax_query' => WC()->query->get_tax_query(),
  42. );
  43. if ( $settings->products_source == 'ids' ) {
  44. $query_args['post__in'] = explode( ',', $settings->product_ids );
  45. } elseif ( $settings->products_source == 'category' ) {
  46. $query_args['tax_query'][] = array(
  47. array(
  48. 'taxonomy' => 'product_cat',
  49. 'terms' => array_map( 'sanitize_title', explode( ',', $settings->category_slug ) ),
  50. 'field' => 'slug',
  51. 'operator' => 'IN',
  52. ),
  53. );
  54. } elseif ( $settings->products_source == 'featured' ) {
  55. $tax_query[] = array(
  56. 'taxonomy' => 'product_visibility',
  57. 'field' => 'name',
  58. 'terms' => 'featured',
  59. 'operator' => 'IN',
  60. );
  61. } elseif ( $settings->products_source == 'sale' ) {
  62. $query_args['post__in'] = array_merge( array( 0 ), wc_get_product_ids_on_sale() );
  63. } elseif ( $settings->products_source == 'best-selling' ) {
  64. $query_args['meta_key'] = 'total_sales';
  65. $query_args['orderby'] = 'meta_value_num';
  66. } elseif ( $settings->products_source == 'top-rated' ) {
  67. add_filter( 'posts_clauses', array( 'WC_Shortcodes', 'order_by_rating_post_clauses' ) );
  68. }
  69. $products = new WP_Query( $query_args );
  70. $columns = intval( $settings->columns );
  71. $max_columns = $columns;
  72. if ( 0 === $columns ) {
  73. $columns = 4; // this is used for thumbnails only
  74. }
  75. $woocommerce_loop['columns'] = $columns;
  76. include locate_template( array( 'templates/woocommerce-scrollable/loop.php' ) );
  77. $products->reset_postdata();
  78. wp_reset_postdata();
  79. remove_filter( 'posts_clauses', array( 'WC_Shortcodes', 'order_by_rating_post_clauses' ) );
  80. remove_filter( 'post_class', array( $module, 'products_post_class' ) );
  81. }
  82. // Closing Wrapper
  83. echo '</div>';