Product Quantity Conditional Logic
Adds quantity field options to conditional logic for Single Product fields that don’t have dedicated quantity fields
Instructions
Code
Filename: gw-product-quantity-conditional-logic.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php
/**
* Gravity Wiz // Gravity Forms // Product Quantity Conditional Logic
*
* Instruction Video: https://www.loom.com/share/38547a28853f4706b10cfdb42eaa45ca
*
* Adds quantity field options to conditional logic for Single Product fields.
*
* Plugin Name: GF Product Quantity Conditional Logic
* Plugin URI: https://gravitywiz.com/
* Description: Adds quantity field options to conditional logic for Single Product fields that don't have dedicated quantity fields
* Author: Gravity Wiz
* Version: 0.1
* Author URI: https://gravitywiz.com
*/
class GW_Product_Quantity_Conditional {
private static $_instance = null;
public static function get_instance() {
if ( self::$_instance == null ) {
self::$_instance = new self;
}
return self::$_instance;
}
public function __construct() {
add_action( 'admin_init', array( $this, 'init' ) );
}
public function init() {
add_action( 'admin_print_scripts', array( $this, 'enqueue_admin_scripts' ) );
}
public function enqueue_admin_scripts() {
if ( ! $this->is_gravity_forms_page() ) {
return;
}
?>
<script type="text/javascript">
window.gwProductQuantityConditional = {
// Check if product has dedicated quantity field
productHasQuantityField: function(fieldId, form) {
for(var i = 0; i < form.fields.length; i++) {
var field = form.fields[i];
if(field.type == 'quantity' && field.productId == fieldId) {
return true;
}
}
return false;
},
};
gform.addFilter('gform_conditional_logic_fields', function(options, form, selectedFieldId) {
for(var i = 0; i < form.fields.length; i++) {
var field = form.fields[i];
if(field.type != 'product' ||
field.inputType != 'singleproduct' ||
gwProductQuantityConditional.productHasQuantityField(field.id, form) ||
field.disableQuantity) {
continue;
}
options.push({
label: (field.adminLabel ? field.adminLabel : field.label) + ' (Quantity)',
value: field.id,
});
}
return options;
});
</script>
<?php
}
public function is_gravity_forms_page() {
return method_exists( 'GFForms', 'is_gravity_page' ) && GFForms::is_gravity_page();
}
}
new GW_Product_Quantity_Conditional();