Support

Account

Home Forums Add-ons Repeater Field Repeater field Specific row

Unread

Repeater field Specific row

  • Hi,

    I’m a very beginner in PHP & ACF PRO.
    I store several row in a repeater field.
    I would like to be able to “call” all fields of any specific row by using a shortcode.

    I’ve found this one:

    /**
     * ACF Pro repeater field shortcode
     *
     * I created this shortcode function because it didn't exist and it was being requested by others
     * I originally posted it here: https://support.advancedcustomfields.com/forums/topic/repeater-field-shortcode/
     * 
     * @attr {string} field - (Required) the name of the field that contains a repeater sub group
     * @attr {string} sub_fields - (Required) a comma separated list of sub field names that are part of the field repeater group
     * @attr {string} post_id - (Optional) Specific post ID where your value was entered. Defaults to current post ID (not required). This can also be options / taxonomies / users / etc
     */
    function my_acf_repeater($atts, $content='') {
      extract(shortcode_atts(array(
        "field" => null,
        "sub_fields" => null,
        "post_id" => null
      ), $atts));
      if (empty($field) || empty($sub_fields)) {
        // silently fail? is that the best option? idk
        return "";
      }
      $sub_fields = explode(",", $sub_fields);
      
      $_finalContent = '';
      if( have_rows($field, $post_id) ):
        while ( have_rows($field, $post_id) ) : the_row();
          
          $_tmp = $content;
          foreach ($sub_fields as $sub) {
            $subValue = get_sub_field(trim($sub));
            $_tmp = str_replace("%$sub%", $subValue, $_tmp);
          }
          $_finalContent .= do_shortcode( $_tmp );
        endwhile;
      else :  
        $_finalContent = "$field does not have any rows";
      endif;
      return $_finalContent;
    }
    add_shortcode("acf_repeater", "my_acf_repeater");

    it ables me to get datas using shortcode like this:

    [acf_repeater field="my-row" sub_fields="full-name,phone-num"]
    name: %full-name%
    [another_shortcode]phone: %phone-num%[/another_shortcode]
    [/acf_repeater]

    The only problem of this Shortcode is that I can’t set a specific row. In fact, it call all rows of the repeater.

    I would love to be able to add a param in the shortcode to set the ROW NUMBER…

    I did not find anything like this into topics that relates of this point…

    Could you help me please?
    That’s so frustrating to no be able to use Repeater field since I can not call datas I store into it =/

    Thanks you so much…

Viewing 1 post (of 1 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.