Support

Account

Home Forums Add-ons Repeater Field ACF Repeater fields within Custom Post loop and Nested Arrays

Unread

ACF Repeater fields within Custom Post loop and Nested Arrays

  • I’m having an issue with a previous developer’s code, but can’t figure it out. I’m working on a page that has 2 arrays inside a loop using repeaters for an accordion drop down of sub fields and dumping all this into a boostrap card into a 2-column card grid.

    Basic structure:
    – if custom query have posts : while custom query have posts : custom query the post
    – if in array
    – if in array
    – count
    – while have rows
    – get sub fields
    – count++
    – endwhile
    – else
    – count
    – while have rows
    – get sub fields
    – count++
    – endwhile
    – endwhile ; endif
    – reset query

    I think it has a $uniqueid issue since both arrays and the “else” section share the same repeater rows, fields and sub fields. What am I doing wrong? The else section near the bottom is the only part that works. “Reset rows” doesn’t seem to help either. Maybe is the array nested inside of an array that’s the issue?

    The 2 arrays handle this page (not working): http://dev-une-online-testing.pantheonsite.io/about/about-owl/academic-programs/

    The <?php } else { ?> section shows up correctly in this page (working): http://dev-une-online-testing.pantheonsite.io/about/about-owl/

    Help?

    <?php 
    function owl_shortcode($atts) {
    	ob_start();
    
    	extract(shortcode_atts (array(
    	    'category' => '',
    	    'name' => '',
    	    'orderby' => 'title'	
    	), $atts));
    						
    	if ($category) {
    		$cats = explode(",", $category);	
    		$array = array();
    		for ($i = 0; $i < count($cats); ++$i) {
    		$array[] = get_category_by_slug($cats[$i])->term_id;
    		}
    		
    		$custom_query = new WP_Query( array( 
    			'category__and' => $array,
    			'post_type' => 'owl',
    			'orderby'   => $orderby,
    			'order'     => 'ASC',
    			'posts_per_page' => -1 
    		));	
    	}
    	else {
    		$custom_query = new WP_Query( array( 
    			'post_type' => 'owl',
    			'orderby'   => $orderby,
    			'order'     => 'ASC',
    			'posts_per_page' => -1 
    		));			
    	}
    	?>	
    	
    <div class="row">	
    <ul class="none">
    
    <?php if ( $custom_query->have_posts() ): while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?>
    		<div class="col-sm-6">
    			<li class="card containFloat">
    				<?php //image ?>
    				<div class="circle">
    					<?php $image = get_field('image');
    					if( !empty($image) ): 
    						$size = 'thumbnail';
    						$thumb = $image['sizes'][ $size ]; ?>
    						<img src="<?php echo $thumb; ?>" alt="<?php echo $image['alt']; ?>"  /> 
    					<?php else: ?>
    						<img src="https://online.une.edu/wp-content/uploads/2018/06/blank-female-profile.jpg" alt="" height="150px" width="150px"/>
    					<?php endif; ?>
    				</div>
    				
    <?php if (in_array("program-administrator", $cats) || in_array("program-manager", $cats) || in_array("program-staff", $cats)) { ?>
        				<div class="containFloat">
        					<h2 class="margin-top">
            				<?php the_title(); ?>
            				<?php if (get_field('degree')) echo ', ' . get_field('degree'); ?>
            				</h2>
    						<?php the_field('job_title'); ?>
    
                            <i class="fas fa-phone"></i> <?php the_field('phone'); ?> 
    
                            <a href="mailto:<?php the_field('email'); ?>"><i class="fas fa-envelope-open"></i> <?php the_field('email'); ?></a>
    
                       		<br>
        				</div>  
        				  
    <?php if (in_array("program-administrator", $cats) || in_array("program-manager", $cats)) { ?>						
        			<div class="clearBoth">
    							
    <!--- Accordion Expander - OWL Shortcode Test - NOT WORKING --->	
    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
                       <?php
                       //$uniqueid = get_sub_field( 'collapser' );
                       $uniqueid = uniqid('collapser');
                       $count = 0;
                       while ( have_rows( 'collapser' ) ) : the_row(); ?>
          	<div class="panel panel-default listbox">
                    <div class="panel-heading" role="tab" id="headingTwo">
          			 	<a data-toggle="collapse" data-parent="#accordion" href="#collapse-<?php echo esc_attr( $uniqueid ); ?>-<?php echo esc_attr( $count ); ?>" aria-expanded="false">
                           <?php the_sub_field( 'expand_row') ?>
                        </a>
                    </div>
            	<div id="collapse-<?php echo esc_attr( $uniqueid ); ?>-<?php echo esc_attr( $count ); ?>" class="panel-collapse collapse" role="tabpanel">
                       <div class="panel-body">
                        	<?php if (get_sub_field('description')) { ?>
    						<div class="panel-text"><b>More info</b><?php the_sub_field('description'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('education')) { ?>
    						<div class="panel-text"><b>Education</b><?php the_sub_field('education'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('expertise')) { ?>
    						<div class="panel-text"><b>Expertise</b><?php the_sub_field('expertise'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('experience')) { ?>
    						<div class="panel-text"><b>Experience</b><?php the_sub_field('experience'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('research')) { ?>
    						<div class="panel-text"><b>Research Interests</b><?php the_sub_field('research'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('publications')) { ?>
    						<div class="panel-text"><b>Publications</b><?php the_sub_field('publications'); ?></div>
    						<?php } ?>
                        	<?php if (get_sub_field('bio')) { ?>
    						<div class="panel-text"><b>Bio</b><?php the_sub_field('bio'); ?></div>
    						<?php } ?>
                    </div>
                </div>
            </div>
    				
            <?php $count ++; ?>
    <?php endwhile; ?>
    </div>
    				</div>
                        <?php } ?> 
                        
    				<?php } else { ?>
        				<div class="containFloat">
        					<h2><?php the_title(); ?></h2>
        					<?php the_field('job_title'); ?>
    
        					<i class="fas fa-phone"></i> <?php the_field('phone'); ?> 
    
        					<i class="fas fa-envelope-open"></i> <a href="mailto:<?php the_field('email'); ?>"> <?php the_field('email'); ?></a>
    <br>
        				</div>
    				
    				
    <!--- Accordion Expander - OWL.php WORKING --->	
    <div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
                       <?php
                       //$uniqueid = get_sub_field( 'collapser' );
                       $uniqueid = uniqid('collapser');
                       $count = 0;
                       while ( have_rows( 'collapser' ) ) : the_row(); ?>
                      <div class="panel panel-default listbox">
                        	<div class="panel-heading" role="tab" id="headingTwo">
                            <a data-toggle="collapse" data-parent="#accordion" href="#collapse-<?php echo esc_attr( $uniqueid ); ?>-<?php echo esc_attr( $count ); ?>" aria-expanded="false">
                            <?php the_sub_field( 'expand_row' ) ?>
                            </a>
                   		 	</div>
                    	<div id="collapse-<?php echo esc_attr( $uniqueid ); ?>-<?php echo esc_attr( $count ); ?>" class="panel-collapse collapse" role="tabpanel">
                       		<div class="panel-body">
                       			<?php if (get_sub_field('description')) { ?>
    							<div class="panel-text"><b>More info</b><?php the_sub_field('description'); ?></div>
    							<?php } ?>
                        		<?php if (get_sub_field('expertise')) { ?>
    							<div class="panel-text"><b>Expertise</b><?php the_sub_field('expertise'); ?></div>
    							<?php } ?>
                    		</div>
                		</div>
            		</div>
            <?php $count ++; ?>
        <?php endwhile; ?>
    </div>
    <!--- End Accordion --->	
    				
                    <?php } ?>
    			
    			</li>
    		</div>
    	
    		<?php endwhile; endif; ?>	
    </ul>	
    	</div>					 
    <?php 
    wp_reset_query(); 
    return ob_get_clean();
    }
    ?>
Viewing 1 post (of 1 total)

The topic ‘ACF Repeater fields within Custom Post loop and Nested Arrays’ is closed to new replies.