Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Gravity Wiz // Gravity Forms // Advanced Conditional Shortcodes
<?php
/**
* Gravity Wiz // Gravity Forms // Advanced Conditional Shortcodes
*
* [gravityforms action="conditional" relation="any"
value="{:2}" operator="is" compare="First Choice"
value2="{:1}" operator2="isnot" compare2="Second Choice"]
Content you would like to conditionally display.
[/gravityforms]
*
*/
add_filter( 'gform_shortcode_conditional', function( $result, $atts, $content ) {
if( ! isset( $atts['value'] ) || isset( $atts['merge_tag'] ) ) {
return $result;
}
$relation = strtolower( rgar( $atts, 'relation', 'all' ) ); // or 'any'
$conditions = array();
foreach( $atts as $key => $prop ) {
preg_match( '|value(\d*)$|', $key, $match );
if( ! empty( $match ) ) {
list( , $index ) = $match;
$conditions[] = array(
'value' => rgar( $atts, sprintf( 'value%s', $index ) ),
'operator' => rgar( $atts, sprintf( 'operator%s', $index ) ),
'compare' => rgar( $atts, sprintf( 'compare%s', $index ) ),
);
}
}
$conditional_met = $relation == 'all';
foreach( $conditions as $condition ) {
$is_match = GFFormsModel::matches_operation( $condition['value'], $condition['compare'], $condition['operator'] );
if( $relation == 'any' && $is_match ) {
$conditional_met = true;
break;
} else if( $relation == 'all' && ! $is_match ) {
$conditional_met = false;
}
}
if( ! $conditional_met ) {
return '';
}
// find and remove any starting/closing <br> tags
if( rgar( $atts, 'format' ) != 'raw' ) {
$content = preg_replace( '/^<br(?: *\/)?>|<br(?: *\/)?>$/', '', $content );
}
return do_shortcode( $content );
}, 10, 3 );
@puregraphx

This comment has been minimized.

Copy link

puregraphx commented Mar 5, 2018

Is this code still relevant because this does not work
[gravityforms action="conditional" relation="any" value="{:9.1:label}" operator="is" compare="elektriciteit" value2="{:22.1:label}" operator2="is" compare2="gas"] (<b>{:9.1:label} en {:22.1:label}</b>) [/gravityforms]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.