Product Quantity Conditional

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.php

<?php
/**
 * Gravity Wiz // Gravity Forms // Product Quantity Conditional
 *
 * 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
 * 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();

Leave a Reply

Your email address will not be published. Required fields are marked *

  • Trouble installing this snippet? See our troubleshooting tips.
  • Need to include code? Create a gist and link to it in your comment.
  • Reporting a bug? Provide a URL where this issue can be recreated.

By commenting, I understand that I may receive emails related to Gravity Wiz and can unsubscribe at any time.