Bricks Element Condition: URL Parameter
Adds a "URL parameter" condition to Bricks element conditions, so you can show an element only when the address contains something like ?ref=newsletter.
Opens WPIDE on
Code
add_filter( 'bricks/conditions/groups', function ( $groups ) {
$groups[] = array( 'name' => 'wpide', 'label' => 'Site rules' );
return $groups;
} );
add_filter( 'bricks/conditions/options', function ( $options ) {
$options[] = array(
'key' => 'wpide_url_param',
'label' => 'URL parameter',
'group' => 'wpide',
'compare' => array(
'type' => 'select',
'options' => array( '==' => 'is', '!=' => 'is not' ),
'placeholder' => 'is',
),
'value' => array( 'type' => 'text', 'placeholder' => 'ref=newsletter' ),
);
return $options;
} );
add_filter( 'bricks/conditions/result', function ( $result, $condition_key, $condition ) {
if ( 'wpide_url_param' !== $condition_key ) {
return $result;
}
$rule = isset( $condition['value'] ) ? (string) $condition['value'] : '';
$compare = isset( $condition['compare'] ) ? $condition['compare'] : '==';
$parts = explode( '=', $rule, 2 );
$name = sanitize_key( $parts[0] );
$current = ( $name && isset( $_GET[ $name ] ) ) ? sanitize_text_field( wp_unslash( $_GET[ $name ] ) ) : null; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
$match = isset( $parts[1] ) ? ( null !== $current && $current === $parts[1] ) : null !== $current;
return '!=' === $compare ? ! $match : $match;
}, 10, 3 );
Notes
Enter the value as name=value (for example ref=newsletter), or just the name to test that the parameter exists.
How to add this snippet
- Install WPIDE on your WordPress site (it is free) and open Code Snippets.
- Use snippet above adds it from the library in one click. Or copy the code into a new snippet with the same code type.
- It is added inactive: review the code and settings, then switch it on.