PluginProbe
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO / 1.2.85
Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO v1.2.85
1.4.15 1.4.14 1.4.13 1.4.12 1.4.11 1.4.10 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.54 1.3.53 1.3.52 1.3.51 1.3.50 1.3.49 1.3.48 1.3.47 1.3.46 All 178 releases
disco / app / DropDown / DropDown.php

DropDown.php in Discount Rules for WooCommerce – Disco | Dynamic Pricing, Conditions, Bulk, Bundle, BOGO 1.2.85, at app/DropDown/DropDown.php

681 lines 23.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php // phpcs:ignore
2 namespace Disco\App\DropDown;
3
4 use Disco\App\Disco;
5
6 /**
7 * Class DropDown
8 *
9 * @package CTXFeed
10 * @subpackage app\DropDown
11 * @author Ohidul Islam <wahid0003@gmail.com>
12 * @link https://webappick.com
13 * @license https://opensource.org/licenses/gpl-license.php GNU Public License
14 * @category MyCategory
15 */
16 class DropDown { // phpcs:ignore
17
18 /**
19 * Conditions.
20 *
21 * @param string $type Condition Type to compare. Acceptable values:
22 * 'string' string type conditions
23 * 'number' number type conditions
24 * 'date' date type conditions
25 * 'select' list type conditions.
26 * @param string|array $key Condition Key to get specific condition.
27 * @return array
28 */
29 public static function conditions( $type = null, $key = null ) { // phpcs:ignore
30 $condition = array(
31 'equal' => 'Equal',
32 'not_equal' => 'Not Equal',
33 'contain' => 'Contain',
34 'not_contain' => 'Does Not Contain',
35 'start_with' => 'Start With',
36 'end_with' => 'End With',
37 'greater' => 'Greater Than',
38 'greater_equal' => 'Greater Than or Equal',
39 'lesser' => 'Less Than',
40 'lesser_equal' => 'Less Than or Equal',
41 'between' => 'Between',
42 'date_between' => 'Date Between',
43 // 'within_past' => 'Within Past',
44 // 'earlier_than' => 'Earlier Than',
45 'in_list' => 'In List',
46 'not_in_list' => 'Not In List',
47 );
48
49 if ( 'string' === $type ) {
50 unset(
51 $condition['in_list'],
52 $condition['not_in_list'],
53 $condition['greater'],
54 $condition['greater_equal'],
55 $condition['lesser'],
56 $condition['lesser_equal'],
57 $condition['between'],
58 $condition['date_between']
59 );
60 }
61
62 if ( 'number' === $type ) {
63 unset(
64 $condition['in_list'],
65 $condition['not_in_list'],
66 $condition['date_between'],
67 $condition['start_with'],
68 $condition['end_with'],
69 $condition['contain'],
70 $condition['not_contain']
71 );
72 }
73
74 if ( 'select' === $type ) {
75 if ( isset( $key['multiple'] ) && $key['multiple'] === false ) {
76 unset(
77 $condition['contain'],
78 $condition['not_contain'],
79 $condition['in_list'],
80 $condition['not_in_list'],
81 $condition['greater'],
82 $condition['greater_equal'],
83 $condition['lesser'],
84 $condition['lesser_equal'],
85 $condition['between'],
86 $condition['date_between'],
87 $condition['start_with'],
88 $condition['end_with']
89 );
90 } else {
91 unset(
92 $condition['contain'],
93 $condition['not_contain'],
94 $condition['equal'],
95 $condition['not_equal'],
96 $condition['greater'],
97 $condition['greater_equal'],
98 $condition['lesser'],
99 $condition['lesser_equal'],
100 $condition['between'],
101 $condition['date_between'],
102 $condition['start_with'],
103 $condition['end_with']
104 );
105 }
106 }
107
108 if ( 'date' === $type ) {
109 unset(
110 $condition['in_list'],
111 $condition['not_in_list'],
112 $condition['contain'],
113 $condition['not_contain'],
114 $condition['start_with'],
115 $condition['end_with'],
116 $condition['between']
117 );
118 }
119
120 if ( is_array( $condition ) ) {
121 return $condition;
122 }
123
124 return array();
125 }
126
127 /**
128 * Prepare Filters for frontend appearance.
129 *
130 * @param string $title Filter Title.
131 *
132 * @param string $condition_type Condition Type to compare. Acceptable values:
133 * 'string' string type conditions
134 * 'number' number type conditions
135 * 'date' date type conditions
136 * 'date' date type conditions
137 * 'select' list type conditions.
138 *
139 * @param string|array $input_type Input Filed for compare value. Acceptable values:
140 * 'text' for input[type=text]
141 * 'number' for input[type=number]
142 * 'date' for input[type=datetime-local]
143 *
144 * For 'select' dropdown, there are two options available:
145 *
146 * For manual options:
147 * [
148 * 'type' => 'select',
149 * 'option_type' => 'manual',
150 * 'multiple' => true,
151 * 'options' => ['key' => 'value']
152 * ]
153 * OR For api options:
154 * [
155 * 'type' => 'select',
156 * 'option_type' => 'api',
157 * 'multiple' => true,
158 * 'endpoint' => 'https://example.com/api/endpoint'
159 * ].
160 *
161 * @param string $component Component to load into frontend. Acceptable values:
162 * 'string' for string type conditions
163 * 'number' for number type conditions
164 * 'date' for date type conditions
165 * 'select' for list type conditions.
166 *
167 * @param bool $disable Disable filter. Default is false.
168 * @return array Filter Array
169 * [0]=>[
170 * [optionGroup] => Filter Group Title,
171 * [options] => [
172 * 'attribute' => [ // Attribute key to compare with. Example: 'id',
173 * 'title', 'sku'.
174 * 'title' => 'Filter Title',
175 * 'component' => 'string',
176 * 'condition' => [available conditions from self::Conditions()]
177 * 'input_type' => 'text',
178 * 'fields' => [
179 * 'compare' => '',
180 * 'condition' => '',
181 * 'compare_with' => '',
182 * 'operator' => '',
183 * ]
184 * ]
185 * ]
186 * ].
187 */
188 public static function prepare_filters(
189 $title,
190 $condition_type = 'string',
191 $input_type = 'text',
192 $component = 'string',
193 $disable = false
194 ) {
195 $fields = array(
196 'compare' => '',
197 'condition' => '',
198 'compare_with' => '',
199 'operator' => '',
200 );
201
202 return array(
203 'title' => $title,// phpcs:ignore
204 'component' => $component,
205 'condition' => self::Conditions( $condition_type, $input_type ),
206 'input_type' => $input_type, // Input Filed Type. Example values -> HTML Input Type
207 'fields' => $fields,
208 'disable' => $disable,
209 );
210 }
211
212 /**
213 * Get All Filters.
214 * Check the phpdoc comments of prepare_filters() method for details.
215 *
216 * @return array
217 * @throws \Exception If the search term is not set.
218 */
219 public static function filters() { // phpcs:ignore
220 $filter_attributes = array();
221
222 $primary_attributes = array(
223 'optionGroup' => __( 'Product/Cart Item', 'disco' ),
224 'options' => array(
225 'id' => self::prepare_filters( 'ID', 'number', 'number' ),
226 'sku' => self::prepare_filters( 'SKU' ),
227 'title' => self::prepare_filters( 'Title' ),
228 'description' => self::prepare_filters( 'Description' ),
229 'short_description' => self::prepare_filters( 'Short Description' ),
230 'attributes' => self::prepare_filters(
231 'Attributes',
232 'select',
233 array(
234 'type' => 'select',
235 'option_type' => 'api',
236 'multiple' => true,
237 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/attribute/?search=' ),
238 )
239 ),
240 'categories' => self::prepare_filters(
241 'Categories',
242 'select',
243 array(
244 'type' => 'select',
245 'option_type' => 'api',
246 'multiple' => true,
247 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/category/?search=' ),
248 )
249 ),
250 'tags' => self::prepare_filters(
251 'Tags',
252 'select',
253 array(
254 'type' => 'select',
255 'option_type' => 'api',
256 'multiple' => true,
257 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/tag/?search=' ),
258 )
259 ),
260 'product_brand' => self::prepare_filters(
261 'WooCommerce Brands',
262 'select',
263 array(
264 'type' => 'select',
265 'option_type' => 'api',
266 'multiple' => true,
267 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/brand/?search=' ),
268 ),
269 'select',
270 ! Disco::is_pro()
271 ),
272 'link' => self::prepare_filters( 'URL' ),
273 'availability' => self::prepare_filters( 'Availability' ),
274 'quantity' => self::prepare_filters( 'Stock Quantity', 'number', 'number' ),
275 'stock_status' => self::prepare_filters(
276 'Stock Status',
277 'select',
278 array(
279 'type' => 'select',
280 'option_type' => 'manual',
281 'multiple' => true,
282 'options' => wc_get_product_stock_status_options(),
283 )
284 ),
285 'weight' => self::prepare_filters( 'Weight', 'number', 'number' ),
286 'weight_unit' => self::prepare_filters(
287 'Weight Unit',
288 'select',
289 array(
290 'type' => 'select',
291 'option_type' => 'manual',
292 'multiple' => true,
293 'options' => array(
294 'kg' => esc_html__( 'kg', 'disco' ),
295 'g' => esc_html__( 'g', 'disco' ),
296 'lb' => esc_html__( 'lb', 'disco' ),
297 'oz' => esc_html__( 'oz', 'disco' ),
298 ),
299 )
300 ),
301 'width' => self::prepare_filters( 'Width', 'number', 'number' ),
302 'height' => self::prepare_filters( 'Height', 'number', 'number' ),
303 'length' => self::prepare_filters( 'Length', 'number', 'number' ),
304 'type' => self::prepare_filters(
305 'Product Type',
306 'select',
307 array(
308 'type' => 'select',
309 'option_type' => 'manual',
310 'multiple' => true,
311 'options' => wc_get_product_types(),
312 )
313 ),
314 'visibility' => self::prepare_filters(
315 'Visibility',
316 'select',
317 array(
318 'type' => 'select',
319 'option_type' => 'manual',
320 'multiple' => true,
321 'options' => wc_get_product_visibility_options(),
322 )
323 ),
324 'rating_total' => self::prepare_filters( 'Total Rating', 'number', 'number' ),
325 'rating_average' => self::prepare_filters( 'Average Rating', 'number', 'number' ),
326 'author_name' => self::prepare_filters(
327 'Author Name',
328 'select',
329 array(
330 'type' => 'select',
331 'option_type' => 'api',
332 'multiple' => true,
333 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/user_name/?search=' ),
334 )
335 ),
336 'author_email' => self::prepare_filters(
337 'Author Email',
338 'select',
339 array(
340 'type' => 'select',
341 'option_type' => 'api',
342 'multiple' => true,
343 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/user_email/?search=' ),
344 )
345 ),
346 'date_created' => self::prepare_filters( 'Date Created', 'date', 'date' ),
347 'date_updated' => self::prepare_filters( 'Date Updated', 'date', 'date' ),
348
349 'product_status' => self::prepare_filters(
350 'Status',
351 'select',
352 array(
353 'type' => 'select',
354 'option_type' => 'manual',
355 'multiple' => false,
356 'options' => array(
357 'publish' => esc_html__( 'Publish', 'disco' ),
358 'draft' => esc_html__( 'Draft', 'disco' ),
359 'pending' => esc_html__( 'Pending', 'disco' ),
360 'private' => esc_html__( 'Private', 'disco' ),
361 ),
362 )
363 ),
364 'featured_status' => self::prepare_filters(
365 'Featured Status',
366 'select',
367 array(
368 'type' => 'select',
369 'option_type' => 'manual',
370 'multiple' => false,
371 'options' => array(
372 'yes' => esc_html__( 'Yes', 'disco' ),
373 'no' => esc_html__( 'No', 'disco' ),
374 ),
375 )
376 ),
377 ),
378 );
379 $filter_attributes[] = $primary_attributes;
380
381 $price_attributes = array(
382 'optionGroup' => esc_html__( 'Price', 'disco' ),
383 'options' => array(
384 'currency' => self::prepare_filters( 'Currency' ),
385 'regular_price' => self::prepare_filters( 'Regular Price', 'number', 'number' ),
386 'price' => self::prepare_filters( 'Price', 'number', 'number' ),
387 'sale_price' => self::prepare_filters( 'Sale Price', 'number', 'number' ),
388 'regular_price_with_tax' => self::prepare_filters( 'Regular Price With Tax', 'number', 'number' ),
389 'price_with_tax' => self::prepare_filters( 'Price With Tax', 'number', 'number' ),
390 'sale_price_with_tax' => self::prepare_filters( 'Sale Price With Tax', 'number', 'number' ),
391 'sale_price_sdate' => self::prepare_filters( 'Sale Start Date', 'date', 'date' ),
392 'sale_price_edate' => self::prepare_filters( 'Sale End Date', 'date', 'date' ),
393 ),
394 );
395
396 $filter_attributes[] = $price_attributes;
397
398 // Product Global Attributes
399 $filter_attributes[] = AttributeDropDown::get_global_attributes();
400
401 // Product ACF Attributes
402 $filter_attributes[] = AttributeDropDown::get_acf_attributes();
403
404 // Tax and Shipping Attributes
405 $tax_shipping = array(
406 'optionGroup' => esc_html__( 'Tax and Shipping', 'disco' ),
407 'options' => array(
408 'tax_class' => self::prepare_filters( 'Tax Class' ),
409 'tax_status' => self::prepare_filters( 'Tax Status' ),
410 'shipping_class' => self::prepare_filters( 'Shipping Class' ),
411 ),
412 );
413 $filter_attributes[] = $tax_shipping;
414
415 /**
416 * Subscription Attributes
417 * Add subscription attributes if WooCommerce Subscription plugin installed.
418 *
419 * @link https://woocommerce.com/products/woocommerce-subscriptions/
420 */
421 if ( class_exists( 'WC_Subscriptions' ) ) {
422 $subscription_attributes = array(
423 'optionGroup' => esc_html__( 'Subscription & Installment', 'disco' ),
424 'options' => array(
425 'subscription_period' => self::prepare_filters( 'Subscription Period' ),
426 'subscription_period_interval' => self::prepare_filters( 'Subscription Period Length' ),
427 'subscription_amount' => self::prepare_filters( 'Subscription Amount', 'number', 'number' ),
428 'installment_months' => self::prepare_filters( 'Installment Months', 'number', 'number' ),
429 'installment_amount' => self::prepare_filters( 'Installment Amount', 'number', 'number' ),
430 ),
431 );
432 // TODO: Move to premium version
433 // $filter_attributes[] = $subscription_attributes;
434 }
435
436 /**
437 * Unit Price (WooCommerce Germanized)
438 * Get Germanized for WooCommerce plugins unit attributes.
439 *
440 * @link https://wordpress.org/plugins/woocommerce-germanized/
441 */
442 if ( class_exists( 'WooCommerce_Germanized' ) ) {
443 $wc_unit_price_attributes = array(
444 'optionGroup' => esc_html__( 'Unit Price (WooCommerce Germanized)', 'disco' ),
445 'options' => array(
446 'wc_germanized_unit_price_measure' => self::prepare_filters( 'Unit Price Measure' ),
447 'wc_germanized_unit_price_base_measure' => self::prepare_filters( 'Unit Price Base Measure' ),
448 'wc_germanized_gtin' => self::prepare_filters( 'GTIN' ),
449 'wc_germanized_mpn' => self::prepare_filters( 'MPN' ),
450 ),
451 );
452
453 // TODO: Move to premium version
454 // $filter_attributes[] = $wc_unit_price_attributes;
455 }
456
457 // Cart Attributes
458 $cart_attributes = array(
459 'optionGroup' => esc_html__( 'Cart', 'disco' ),
460 'options' => array(
461 'cart_items_count' => self::prepare_filters( 'Items Count (Entire Cart)', 'number', 'number' ),
462 'cart_items_quantity' => self::prepare_filters( 'Items Quantity (Entire Cart)', 'number', 'number' ),
463 'item_quantity' => self::prepare_filters( 'Item Quantity', 'number', 'number', 'number', ! Disco::is_pro() ),
464 'item_count' => self::prepare_filters( 'Item Count', 'number', 'number', 'number', ! Disco::is_pro() ),
465 'cart_total_weight' => self::prepare_filters( 'Cart Items Total Weight', 'number', 'number' ),
466 'cart_subtotal' => self::prepare_filters( 'Cart Subtotal', 'number', 'number' ),
467 'cart_payment_method' => self::prepare_filters(
468 'Payment Method',
469 'select',
470 array(
471 'type' => 'select',
472 'option_type' => 'manual',
473 'multiple' => true,
474 'options' => StoreDropDown::payment_methods(),
475 )
476 ),
477 'cart_coupons' => self::prepare_filters(
478 'Cart Coupons',
479 'select',
480 array(
481 'type' => 'select',
482 'option_type' => 'api',
483 'multiple' => true,
484 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/coupon/?search=' ),
485 )
486 ),
487 'products_in_cart' => self::prepare_filters(
488 'Products in Cart',
489 'select',
490 array(
491 'type' => 'select',
492 'option_type' => 'api',
493 'multiple' => true,
494 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
495 ),
496 'select',
497 ! Disco::is_pro()
498 ),
499 ),
500 );
501
502 $filter_attributes[] = $cart_attributes;
503
504 $purchase_history_attributes = array(
505 'optionGroup' => esc_html__( 'Product Purchase History', 'disco' ),
506 'options' => array(
507 'product_history_last_order_date' => self::prepare_filters( 'Last Order Date', 'date', 'date' ),
508 'product_history_total_order_made' => self::prepare_filters( 'Number of Order Made with a Product', 'number', 'number' ),
509 'product_history_total_amount_sold' => self::prepare_filters( 'Number of Amount Sold with a Product', 'number', 'number' ),
510 'product_history_total_quantity_sold' => self::prepare_filters( 'Number of Quantities Sold with a Product', 'number', 'number' ),
511 // 'product_history_total_order_made_by_ids' => self::prepare_filters(
512 // 'Number of Order Made with Following Products',
513 // 'select',
514 // array(
515 // 'type' => 'select',
516 // 'option_type' => 'api',
517 // 'multiple' => true,
518 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
519 // )
520 // ),
521 // 'product_history_total_amount_sold_by_ids' => self::prepare_filters(
522 // 'Number of Amount Sold with Following Products',
523 // 'select',
524 // array(
525 // 'type' => 'select',
526 // 'option_type' => 'api',
527 // 'multiple' => true,
528 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
529 // )
530 // ),
531 // 'product_history_total_quantity_sold_by_ids' => self::prepare_filters(
532 // 'Number of Quantities Sold with Following Products',
533 // 'select',
534 // array(
535 // 'type' => 'select',
536 // 'option_type' => 'api',
537 // 'multiple' => true,
538 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
539 // )
540 // ),
541 ),
542 'disabled' => !Disco::is_pro(), // Disable if not pro.
543 );
544
545 // TODO: Move to premium version
546 $filter_attributes[] = $purchase_history_attributes;
547
548 $customer_attributes = array(
549 'optionGroup' => esc_html__( 'Customer', 'disco' ),
550 'options' => array(
551 // 'customer_email' => self::prepare_filters(
552 // 'Email',
553 // 'select',
554 // array(
555 // 'type' => 'select',
556 // 'option_type' => 'api',
557 // 'multiple' => true,
558 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/customer/?search=' ),
559 // )
560 // ),
561 'customer_name' => self::prepare_filters(
562 'Customer',
563 'select',
564 array(
565 'type' => 'select',
566 'option_type' => 'api',
567 'multiple' => true,
568 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/customer/?search=' ),
569 )
570 ),
571 'customer_is_logged_in' => self::prepare_filters(
572 'Is Logged In',
573 'select',
574 array(
575 'type' => 'select',
576 'option_type' => 'manual',
577 'multiple' => false,
578 'options' => array(
579 'yes' => esc_html__( 'Yes', 'disco' ),
580 'no' => esc_html__( 'No', 'disco' ),
581 ),
582 )
583 ),
584 'customer_user_role' => self::prepare_filters(
585 'User Role',
586 'select',
587 array(
588 'type' => 'select',
589 'option_type' => 'manual',
590 'multiple' => true,
591 'options' => StoreDropDown::user_roles(),
592 )
593 ),
594 'customer_country' => self::prepare_filters(
595 'Country',
596 'select',
597 array(
598 'type' => 'select',
599 'option_type' => 'api',
600 'multiple' => true,
601 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/country/?search=' ),
602 )
603 ),
604 'customer_state' => self::prepare_filters(
605 'State',
606 'select',
607 array(
608 'type' => 'select',
609 'option_type' => 'api',
610 'multiple' => true,
611 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/state/?search=' ),
612 )
613 ),
614 'customer_zip' => self::prepare_filters( 'Zip' ),
615 ),
616 );
617
618 $filter_attributes[] = $customer_attributes;
619
620 $customer_order_history_attributes = array(
621 'optionGroup' => esc_html__( 'Customer Purchase History', 'disco' ),
622 'options' => array(
623 'customer_history_is_first_order' => self::prepare_filters(
624 'Is First Order',
625 'select',
626 array(
627 'type' => 'select',
628 'option_type' => 'manual',
629 'multiple' => false,
630 'options' => array(
631 'yes' => esc_html__( 'Yes', 'disco' ),
632 'no' => esc_html__( 'No', 'disco' ),
633 ),
634 )
635 ),
636 'customer_history_last_order_date' => self::prepare_filters( 'Last Order Date', 'date', 'date' ),
637 'customer_history_last_order_amount' => self::prepare_filters( 'Last Order Amount', 'number', 'number' ),
638 'customer_history_total_order_made' => self::prepare_filters( 'Number of Order Made By Customer', 'number', 'number' ),
639 'customer_history_total_amount_sold' => self::prepare_filters( 'Total Amount Spent By Customer', 'number', 'number' ),
640 'customer_history_total_quantity_sold' => self::prepare_filters( 'Total Quantities Bought By Customer', 'number', 'number' ),
641 // 'customer_history_total_order_made_by_ids' => self::prepare_filters(
642 // 'Number of Order Made with Following Products',
643 // 'select',
644 // array(
645 // 'type' => 'select',
646 // 'option_type' => 'api',
647 // 'multiple' => true,
648 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
649 // )
650 // ),
651 // 'customer_history_total_amount_sold_by_ids' => self::prepare_filters(
652 // 'Number of Amount Sold with Following Products',
653 // 'select',
654 // array(
655 // 'type' => 'select',
656 // 'option_type' => 'api',
657 // 'multiple' => true,
658 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
659 // )
660 // ),
661 // 'customer_history_total_quantity_sold_by_ids' => self::prepare_filters(
662 // 'Number of Quantities Sold with Following Products',
663 // 'select',
664 // array(
665 // 'type' => 'select',
666 // 'option_type' => 'api',
667 // 'multiple' => true,
668 // 'endpoint' => get_site_url( null, '/wp-json/disco/v1/search/product/?search=' ),
669 // )
670 // ),
671 ),
672 'disabled' => !Disco::is_pro(), // Disable if not pro.
673 );
674 // TODO: Move to premium version
675 $filter_attributes[] = $customer_order_history_attributes;
676
677 return apply_filters( 'disco_filter_drop_down', $filter_attributes );
678 }
679
680 }
681