PluginProbe ʕ •ᴥ•ʔ
Shortcodes and extra features for Phlox theme / 2.17.21
Shortcodes and extra features for Phlox theme v2.17.21
2.17.21 2.17.20 trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.0.6 1.0.9 1.1.0 1.3.0 1.3.1 1.3.10 1.3.14 1.3.2 1.3.3 1.3.6 1.4.0 1.4.1 1.4.2 1.5.0 1.5.2 1.6.0 1.6.2 1.6.4 1.7.0 1.7.2 2.10.0 2.10.1 2.10.3 2.10.5 2.10.7 2.10.8 2.10.9 2.11.0 2.11.1 2.11.2 2.12.0 2.14.0 2.15.0 2.15.2 2.15.4 2.15.5 2.15.6 2.15.7 2.15.8 2.15.9 2.16.0 2.16.1 2.16.2 2.16.3 2.16.4 2.17.0 2.17.1 2.17.12 2.17.13 2.17.14 2.17.15 2.17.16 2.17.2 2.17.3 2.17.4 2.17.5 2.17.6 2.17.8 2.17.9 2.4.12 2.4.13 2.4.14 2.4.16 2.4.18 2.4.19 2.4.9 2.5.0 2.5.1 2.5.10 2.5.11 2.5.12 2.5.13 2.5.14 2.5.15 2.5.16 2.5.17 2.5.19 2.5.2 2.5.20 2.5.3 2.5.7 2.5.8 2.5.9 2.6.0 2.6.1 2.6.10 2.6.12 2.6.13 2.6.14 2.6.15 2.6.16 2.6.17 2.6.19 2.6.2 2.6.20 2.6.4 2.6.5 2.6.7 2.7.0 2.7.1 2.7.10 2.7.11 2.7.12 2.7.13 2.7.14 2.7.2 2.7.3 2.7.4 2.7.5 2.7.6 2.7.7 2.7.8 2.7.9 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.8.5 2.8.6 2.8.7 2.8.9 2.9.0 2.9.12 2.9.14 2.9.15 2.9.16 2.9.17 2.9.18 2.9.19 2.9.2 2.9.20 2.9.21 2.9.22 2.9.3 2.9.4 2.9.5 2.9.6 2.9.7 2.9.8
auxin-elements / public / templates / woocommerce / products-grid.php
auxin-elements / public / templates / woocommerce Last commit date
product-rating.php 6 years ago products-grid.php 4 years ago recent-products.php 1 year ago
products-grid.php
172 lines
1 <?php
2 function auxin_products_grid( $args= array() ) {
3
4 global $post;
5
6 $defaults = array (
7 'product_type' => '', // available values : recent, featured, top_rated, sale, deal, best_selling
8 'title' => '', // header title (required)
9 'subtitle' => '', // header subtitle
10 'cat' => '',
11 'num' => '8', // max generated entry
12 'order_by' => 'date',
13 'order' => 'DESC',
14 'only_products__in' => '', // display only these post IDs. array or string comma separated
15 'include' => '', // include these post IDs in result too. array or string comma separated
16 'exclude' => '', // exclude these post IDs from result. array or string comma separated
17 'offset' => '',
18 'desktop_cnum' => 4,
19 'post_type' => 'product',
20 'taxonomy' => 'product_cat', // the taxonomy that we intent to display in post info
21 'tax_args' => '',
22 'content_width' => '',
23 'extra_classes' => '',
24 'terms' => ' ',
25 'universal_id' => '',
26 'use_wp_query' => false, // true to use the global wp_query, false to use internal custom query
27 'reset_query' => true,
28 'wp_query_args' => array(), // additional wp_query args
29 'query_args' => array(),
30 'custom_wp_query' => '',
31 'base' => 'aux_products_grid',
32 'base_class' => 'aux-widget-products-grid'
33 );
34
35 $args = wp_parse_args( $args, $defaults );
36
37 if( ( empty( $args['terms'] ) || $args['terms'] === "all" ) && !empty( $args['cat'] ) ) {
38 $tax_args = array(
39 array(
40 'taxonomy' => 'product_cat',
41 'field' => 'term_id',
42 'terms' => $args['cat']
43 )
44 );
45 } else if ( ! empty( $args['terms'] ) ) {
46 $tax_args = array(
47 array(
48 'taxonomy' => $args['taxonomy'],
49 'field' => 'term_id',
50 'terms' => $args['terms']
51 )
52 );
53 } else if ( empty( $args['cat'] ) ) {
54 $tax_args = array();
55 }
56
57 if ( empty( $args['cat'] ) && $args['taxonomy'] == 'product_tag' && $args['terms'] === "all" ) {
58 $tax_args = [];
59 }
60
61 $query_args = array(
62 'post_type' => 'product',
63 'posts_per_page' => $args['num'],
64 'orderby' => $args['order_by'],
65 'order' => $args['order'],
66 'tax_query' => $tax_args,
67 'post_status' => 'publish',
68 'include_posts__in' => $args['include'], // include posts in this list
69 'posts__not_in' => $args['exclude'], // exclude posts in this list
70 'posts__in' => $args['only_products__in'], // only posts in this list
71 'exclude_without_media' => $args['exclude_without_media']
72 );
73
74 if ( isset( $args['meta_key'] ) ) {
75 $query_args['meta_key'] = $args['meta_key'];
76 }
77
78
79 // add the additional query args if available
80 if( $args['query_args'] ){
81 $query_args = wp_parse_args( $query_args, $args['query_args'] );
82 }
83
84 if ( $args['product_type'] ) {
85 switch ( $args['product_type'] ) {
86 case 'featured':
87 $query_args['tax_query'][] = array(
88 'taxonomy' => 'product_visibility',
89 'field' => 'name',
90 'terms' => 'featured',
91 );
92 break;
93
94 case 'best_selling':
95 $query_args['orderby'] = 'meta_value_num';
96 break;
97
98 case 'sale':
99 $query_args['meta_query'] = WC()->query->get_meta_query();
100 $query_args['post__in'] = wc_get_product_ids_on_sale();
101 break;
102
103 case 'deal':
104 $today = time();
105 $query_args['meta_query'] = array (
106 'relation' => 'AND',
107 array (
108 'key' => '_sale_price_dates_from',
109 'value' => '',
110 'compare' => '!='
111 ),
112 array (
113 'key' => '_sale_price_dates_from',
114 'value' => $today,
115 'compare' => '<='
116 ),
117 array (
118 'key' => '_sale_price_dates_to',
119 'value' => '',
120 'compare' => '!='
121 ),
122 array (
123 'key' => '_sale_price_dates_to',
124 'value' => $today,
125 'compare' => '>='
126 ),
127 );
128 break;
129
130 case 'top_rated':
131 $query_args['meta_query'] = WC()->query->get_meta_query();
132 add_filter( 'posts_clauses', array( 'WC_Shortcodes', 'order_by_rating_post_clauses' ) );
133 break;
134 default: // i.e. recent product
135 $query_args['meta_query'] = WC()->query->get_meta_query();
136 break;
137 }
138 }
139
140 ob_start();
141
142 // pass the args through the auxin query parser
143 $wp_query = new WP_Query( auxin_parse_query_args( $query_args ) );
144
145 $have_posts = $wp_query->have_posts();
146
147 if( $have_posts ){
148
149 while ( $wp_query->have_posts() ) {
150
151 $wp_query->the_post();
152
153 wc_get_template( 'content-product.php' );
154
155 }
156
157 }
158
159
160 if( $args['reset_query'] ){
161 wp_reset_postdata();
162 }
163
164 // return false if no result found
165 if( ! $have_posts ){
166 ob_get_clean();
167 return false;
168 }
169
170 return ob_get_clean();
171 };
172