Support

Account

Home Forums Feature Requests Conditional Logic for Clone fields

Solved

Conditional Logic for Clone fields

    • locomo

    • August 17, 2016 at 6:12 am

    Would it be possible to make Conditional Logic available for Clone fields?

    Clone fields are AWESOME and this would make them even more awesome.

    Based on a select list choice I’d like to dynamically display different clone fields.

    thanks

    • JMac

    • August 17, 2016 at 8:45 pm

    I just came here to sign up to the forum to ask the same question.

    Good news! While I was waiting for my validation email I figured out that this is already a feature. You just need to change the “Display” setting on the clone field to “Group”, then the conditional logic options will appear.

    • locomo

    • August 17, 2016 at 11:30 pm

    boom! nice find

    thank you

    maybe switch my feature request to update the documentation page for the Clone field with this tip

  • Although changing the fields to a group works. is there a reason for this? I much prefer to have the clones seamless instead of groups as this add visual clutter.

    See: https://www.dropbox.com/s/c23vowb0erbxgtp/Screen%20Shot%202018-07-12%20at%2010.55.48.png

    • physalis

    • September 27, 2018 at 7:30 pm

    Would be interested to know as well, since I often use clones within a group, this creates unnecessary wrapping, would love to have conditional logic in either way as well.

  • When using the seamless and you include the same fields multiple times at the same level the fields will have the same field names and they are at the same level. Not only will you have trouble with conditional logic, you will also have trouble saving the data in the fields, since they both have the same name the saving of the 2nd, 3rd, etc fields will overwrite the previous values. In essence you only have one field shown multiple times. Seamless is meant for reusing the fields in a repeater or flex field where they already have some protection.

    When grouped they work more like the sub fields of a repeater or flex field. The field names are prefixed, the fields have parents, and this prevents the issues.

    This is all explained in the clone field documentation. See Limitations and Notes near the bottom of the page. https://www.advancedcustomfields.com/resources/clone/

    • jongc

    • March 31, 2021 at 10:10 am

    I use clone fields heavily to make managing component blocks and their fields easier. There are some things about the Group setting that I dislike similar to alpipego. Since the seamless fields have conditional displays within that field group, is it possible to have a “nested” set of display fields for seamless fields too that are honored at the parent-level? For example:

    Background Settings Field Group

    – Background Type (radio)
    — Option 1: None
    — Option 2: Color
    — Option 3: Image
    – Background Color (color picker; displays when “Option 2: Color” is selected)
    – Background Image (image; displays when “Option 3: Image” is selected)

    Then in a flexible field, there is a group of flexible fields that reuses the background settings field group like so.

    – Content (WYSIWYG)
    – Media Type (radio)
    — Option 1: Image
    — Option 2: Form
    – Image (image; displays when “Option 1: Image” is selected)
    – Form (post object; displays when “Option 2: Form” is selected)
    – Form Background (clone; displays when “Option 2: Form” is selected) <– Honor this conditional display in parent flexible fields, and then honor conditional display in fields of field group

  • @jongc

    There is a way to do this, but not by using the admin controls and I can’t give you the full code because it would be fairly complicated.

    What you need to do is to alter the conditional logic of the field. This can be accomplished but creating an acr/prepare_field filter for the field in questions. In this filter you would look at $field[‘parent’] and this might let you determine if the field is used in the way you have it set up. If you can, and it is, then you could alter the conditional logic for the field to make it work the way you want it to.

    I have done similar things in the past. This code is an example from a recent project and I use this filter to remove sub fields base on the parent field in some cases.

    
    function remove_fields_on_theme_options($field) {
      
      // remvove some layout fields on options page
      $fields = array(
        'field_5ea2ea8fa0ca2'
      );
      if (in_array($field['key'], $fields)) {
        $parents = array(
          'field_5f32b07ae9253'
        );
        if (in_array($field['parent'], $parents)) {
          return false;
        }
      }
      
      // remove all layout fields and CTA tab inside of quick links
      $fields = array(
        'field_5ea2ea8fa0ca2',
        'field_5eadd1ef885d1',
        'field_5ea5d1d7a83e2',
        'field_5ea5d209a83e3',
        'field_5ddf3c9274fd1'
      );
      $parents = array(
        'field_5f15c8a928f77',
        'field_5f18749c26e32',
        'field_5f1877143d7e0',
        'field_5f32997382af7',
        'field_5f32a577f5900'
      );
      if (in_array($field['key'], $fields) && in_array($field['parent'], $parents)) {
        return false;
      }
      
      return $field;
    }
    
    • jongc

    • April 11, 2021 at 11:44 am

    I see what you mean John. Thanks for the insight.

Viewing 9 posts - 1 through 9 (of 9 total)

You must be logged in to reply to this topic.

We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.