Support

Account

Home Forums General Issues How to get field data from a group inside a group

Solving

How to get field data from a group inside a group

  • I have created a group field album_group that includes groups inside it. What I’m trying to figure out now is how to output the text fields inside album_information. For example, get the campaign_title field using the usual <?php echo get_field('campaign_title');?>

    Album Group

    Album Information

    Am I correct in saying I can access the nested group fields without having to use a loop? I’d rather just access them so I can place in certain divs etc.

  • All good, worked it out by putting it through the loop then accessing the sub_fields!

    <?php
    
      if( have_rows('album_group') ):
    
      while( have_rows('album_group') ): the_row();
    
      $cp_album_info = get_sub_field('album_information');
      $cp_album_music = get_sub_field('album_music_g');
      $cp_album_name = get_sub_field('campaign_album_name');
      $cp_album_links = get_sub_field('album_links');
    
      ...
    
     ?>
  • I had the same problem and it drove me nuts. This should be mentioned in the docs somewhere. I know it is on the groups page of the docs, but it does not state WHY.

  • Using the variables isn’t working for me, neither is the basic code from the documentation. I also tried the loop have_rows() function but with no success. Can someone help me?

    <?php
    // vars
    $phone = get_field(‘contact_phone’);
    if( $phone ): ?>
    <p class=”heading-8″><?php echo $phone[‘title’]; ?></p>
    <?php endif; ?>

    I’m using this documentation as reference and like I said, neither of those methods are working.
    https://www.advancedcustomfields.com/resources/group/

  • <div class="war-front-form">
    	<?
            php if( have_rows('warranty-member') ): //parent group field
    	while( have_rows('warranty-member') ): the_row(); 
    	// vars
    	   $name = get_sub_field('warranty-name');
    	   $birth = get_sub_field('warranty-birth');
    	   $phone = get_sub_field('warranty-phone');
    	   $email = get_sub_field('warranty-email');
    	?>
    	  <div class="war-front-member">
    	    <h1>고객정보</h1>
    	     <ul>
    		<li><span>이름</span><p><?php echo $name ?></p></li>
    		<li><span>생년월일</span><p><?php echo $birth ?></p></li>
    		<li><span>연락처</span><p><?php echo $phone ?></p></li>
    		<li><span>이메일</span><p><?php echo $email ?></p></li>
    		<li>
    		 <?php if( have_rows('warranty-adress-group') ): //child group field
                     while( have_rows('warranty-adress-group') ): the_row(); 
    		    // vars
    		      $postcode = get_sub_field('warranty-postcode');
    		      $adress = get_sub_field('warranty-adress');
    		      $adress2 = get_sub_field('warranty-adress-2');
    		    ?>
    		    <span>주소</span>
    		    <p><?php echo $postcode ?></p>
    		    <p><?php echo $adress ?></p>
    		    <p><?php echo $adress2 ?></p>
    							
    		<?php endwhile; ?>
    		<?php endif; ?>
    		</li>
    	     </ul>
          </div>
    <?php endwhile; ?>
    <?php endif; ?>

    this is my group in group source code

  • If you don’t need to use loops, this will work for you.

    <?php
        $our_services = get_field('our_services'); // 'our_services' is your parent group
        $service_one = $our_services['service_one']; // 'service_one' is your child group 
     ?>
     
     <?php echo $service_one['service_heading']; // 'service_heading' is a subfield of your child group ?>
  • `<?php $bigImageGroup = get_field(‘big_image_with_button’);
    ?>
    <img src=”<?php echo $bigImageGroup[‘image’][‘url’]; ?>” alt=”<?php echo $bigImageGroup[‘image’][‘alt’]; ?>” width=”100%”>
    <a href=”<?php echo $bigImageGroup[‘button’][‘url’]; ?>” class=”btn secondary”><?php echo $bigImageGroup[‘button’][‘text’]; ?></a>

    This worked for me, I’m not well versed but it seems on PHP but it seems that you keep passing on the objects.

  • I like to add a helper function to my themes…

    
    if ( function_exists( 'get_field' ) ) {
    	function get_group_field( string $group, string $field, $post_id = 0 ) {
    		$group_data = get_field( $group, $post_id );
    		if ( is_array( $group_data ) && array_key_exists( $field, $group_data ) ) {
    			return $group_data[ $field ];
    		}
    		return null;
    	}
    }
    
    

    Usage: <?php echo get_group_field( 'album_group', 'album_information' ); ?>

  • Thanks for your solution. How would this function look like if ‘album_information’ is another group width fields in it? Like:

    get_group_field( 'album_group', 'album_information', 'album_title' )

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

The topic ‘How to get field data from a group inside a group’ is closed to new replies.