Documentation

gform_add_field_buttons

  1. Description
  2. Usage
  3. Parameters
  4. Examples
    1. Example One
    2. Example Two
    3. Example Three
  5. Placement
  6. Source Code


Description

This filter can be used to add/edit/remove the "add field" buttons from the form editor's floating toolbox


Usage

<?php
add_filter( 'gform_add_field_buttons', 'add_map_field' );
?>


Parameters

  • $field_groups array

    The array to be filtered. It contains the field groups (i.e. Standard Fields, Advanced Fields, etc...). Each group then has a "fields" array containing all the fields in the group. Below is how this array is defined:

$standard_fields = array(
    array( 'class' => 'button', 'data-type' => 'text', 'value' => GFCommon::get_field_type_title( 'text' ) ),
    array( 'class' => 'button', 'data-type' => 'textarea', 'value' => GFCommon::get_field_type_title( 'textarea' ) ),
    array( 'class' => 'button', 'data-type' => 'select', 'value' => GFCommon::get_field_type_title( 'select' ) ),
    array( 'class' => 'button', 'data-type' => 'multiselect', 'value' => GFCommon::get_field_type_title( 'multiselect' ) ),
    array( 'class' => 'button', 'data-type' => 'number', 'value' => GFCommon::get_field_type_title( 'number' ) ),
    array( 'class' => 'button', 'data-type' => 'checkbox', 'value' => GFCommon::get_field_type_title( 'checkbox' ) ),
    array( 'class' => 'button', 'data-type' => 'radio', 'value' => GFCommon::get_field_type_title( 'radio' ) ),
    array( 'class' => 'button', 'data-type' => 'hidden', 'value' => GFCommon::get_field_type_title( 'hidden' ) ),
    array( 'class' => 'button', 'data-type' => 'html', 'value' => GFCommon::get_field_type_title( 'html' ) ),
    array( 'class' => 'button', 'data-type' => 'section', 'value' => GFCommon::get_field_type_title( 'section' ) ),
    array( 'class' => 'button', 'data-type' => 'page', 'value' => GFCommon::get_field_type_title( 'page' ) ),
);</p>

<p>$advanced_fields = array(
    array( 'class' => 'button', 'data-type' => 'name', 'value' => GFCommon::get_field_type_title( 'name' ) ),
    array( 'class' => 'button', 'data-type' => 'date', 'value' => GFCommon::get_field_type_title( 'date' ) ),
    array( 'class' => 'button', 'data-type' => 'time', 'value' => GFCommon::get_field_type_title( 'time' ) ),
    array( 'class' => 'button', 'data-type' => 'phone', 'value' => GFCommon::get_field_type_title( 'phone' ) ),
    array( 'class' => 'button', 'data-type' => 'address', 'value' => GFCommon::get_field_type_title( 'address' ) ),
    array( 'class' => 'button', 'data-type' => 'website', 'value' => GFCommon::get_field_type_title( 'website' ) ),
    array( 'class' => 'button', 'data-type' => 'email', 'value' => GFCommon::get_field_type_title( 'email' ) ),
    array( 'class' => 'button', 'data-type' => 'password', 'value' => GFCommon::get_field_type_title( 'password' ) ),
    array( 'class' => 'button', 'data-type' => 'fileupload', 'value' => GFCommon::get_field_type_title( 'fileupload' ) ),
    array( 'class' => 'button', 'data-type' => 'captcha', 'value' => GFCommon::get_field_type_title( 'captcha' ) ),
    array( 'class' => 'button', 'data-type' => 'list', 'value' => GFCommon::get_field_type_title( 'list' ) )
);</p>

<p>$post_fields = array(
    array( 'class' => 'button', 'data-type' => 'post_title', 'value' => GFCommon::get_field_type_title( 'post_title' ) ),
    array( 'class' => 'button', 'data-type' => 'post_content', 'value' => GFCommon::get_field_type_title( 'post_content' ) ),
    array( 'class' => 'button', 'data-type' => 'post_excerpt', 'value' => GFCommon::get_field_type_title( 'post_excerpt' ) ),
    array( 'class' => 'button', 'data-type' => 'post_tags', 'value' => GFCommon::get_field_type_title( 'post_tags' ) ),
    array( 'class' => 'button', 'data-type' => 'post_category', 'value' => GFCommon::get_field_type_title( 'post_category' ) ),
    array( 'class' => 'button', 'data-type' => 'post_image', 'value' => GFCommon::get_field_type_title( 'post_image' ) ),
    array( 'class' => 'button', 'data-type' => 'post_custom_field', 'value' => GFCommon::get_field_type_title( 'post_custom_field' ) ),
);</p>

<p>$pricing_fields = array(
    array( 'class' => 'button', 'data-type' => 'product', 'value' => GFCommon::get_field_type_title( 'product' ) ),
    array( 'class' => 'button', 'data-type' => 'quantity', 'value' => GFCommon::get_field_type_title( 'quantity' ) ),
    array( 'class' => 'button', 'data-type' => 'option', 'value' => GFCommon::get_field_type_title( 'option' ) ),
    array( 'class' => 'button', 'data-type' => 'shipping', 'value' => GFCommon::get_field_type_title( 'shipping' ) ),
    array( 'class' => 'button', 'data-type' => 'total', 'value' => GFCommon::get_field_type_title( 'total' ) ),
    array( 'class' => 'button', 'data-type' => 'creditcard', 'value' => GFCommon::get_field_type_title( 'creditcard' ) ),
);</p>

<p>$field_groups = array(
    array( 'name' => 'standard_fields', 'label' => __( 'Standard Fields', 'gravityforms' ), 'fields' => $standard_fields, 'tooltip_class' => 'tooltip_bottomleft' ),
    array( 'name' => 'advanced_fields', 'label' => __( 'Advanced Fields', 'gravityforms' ), 'fields' => $advanced_fields ),
    array( 'name' => 'post_fields', 'label' => __( 'Post Fields', 'gravityforms' ), 'fields' => $post_fields ),
    array( 'name' => 'pricing_fields', 'label' => __( 'Pricing Fields', 'gravityforms' ), 'fields' => $pricing_fields )
);


Examples


Example One

This example adds a "Map" field button to the advanced group

add_filter( 'gform_add_field_buttons', 'add_map_field' );
function add_map_field( $field_groups ) {
    foreach ( $field_groups as &amp;$group ) {
        if ( $group['name'] == 'advanced_fields' ) {
            $group['fields'][] = array(
                'class'     => 'button',
                'date-type' => 'map',
                'value'     => __( 'Map', 'gravityforms' ),
                'onclick'   => "StartAddField('map');"
            );
            break;
        }
    }</p>

<pre><code>return $field_groups;
</code></pre>

<p>}


Example Two

This example removes the file upload button and the entire post field group from the form editor toolbox

add_filter( 'gform_add_field_buttons', 'remove_fields' );
function remove_fields( $field_groups ) {
    $index                = 0;
    $post_field_index     = - 1;
    $advanced_field_index = - 1;</p>

<pre><code>//Finding group indexes
foreach ( $field_groups as $group ) {
    if ( $group['name'] == 'post_fields' ) {
        $post_field_index = $index;
    } elseif ( $group['name'] == 'advanced_fields' ) {
        $advanced_field_index = $index;
    }

    $index ++;
}

//removing file upload field
if ( $advanced_field_index &gt;= 0 ) {
    $file_upload_index = - 1;
    $index             = 0;
    foreach ( $field_groups[ $advanced_field_index ]['fields'] as $advanced_field ) {
        if ( $advanced_field['value'] == 'File Upload' ) {
            $file_upload_index = $index;
        }
        $index ++;
    }

    unset( $field_groups[ $advanced_field_index ]['fields'][ $file_upload_index ] );
}

//removing entire post field group
if ( $post_field_index &gt;= 0 ) {
    unset( $field_groups[ $post_field_index ] );
}

return $field_groups;
</code></pre>

<p>}


Example Three

This example updates the onclick attribute of the coupon field.

add_filter( 'gform_add_field_buttons', function ( $field_groups ) {
    foreach ( $field_groups as &amp;$group ) {
        if ( $group['name'] == 'pricing_fields' ) {
            foreach ( $group['fields'] as &amp;$field ) {
                if ( isset( $field['data-type'] ) &amp;&amp; $field['data-type'] == 'coupon' ) {
                    $field['onclick'] = "StartAddCouponField('coupon');";
                    break;
                }
            }
            break;
        }
    }</p>

<pre><code>return $field_groups;
</code></pre>

<p>} );


Placement

This code should be placed in the functions.php file of your active theme.


Source Code

This filter is located in form_detail.php