Support

Account

Home Forums Add-ons Repeater Field Nested repeater, options page tags and terms.

Solving

Nested repeater, options page tags and terms.

  • Hi,

    I am bulding a configurable faq page. You create the structure in ACF options page.
    For example:

    Topic 1
    – tag 1
    – tag 2
    – tag 3
    Topic 2
    – tag 1
    – tag 2
    Topic 3

    I use custom query with a custom post type faq, with categories from taxonomy kategoria_faq, term which is Topic 1 is retrived from options page (and that works fine). Then there is tag which is tag 1 for second level repeater (and this is where problem starts).

    Can you please have a look at that scenario ?

    So 1 level works fine, here is the code:

    <?php if( have_rows('ustawienia_centrum_pomocy', 'option') ): ?>
    <div id="politykaTabs">
    	<ul class="nav nav-tabs" role="tablist">
    		<!-- Nav tabs -->
    		<?php while ( have_rows('ustawienia_centrum_pomocy', 'option') ) : the_row(); ?>
    			<?php //ACF Fields setup
    				//$tytulZakladki = get_sub_field_object('tytul_zakladki_glownej', 'option');
    				$tytulZakladki = get_sub_field('tytul_zakladki_glownej', 'option');
    				$tytulZakladkiSlug = zamienione($tytulZakladki);
    				
    				//Ustawianie aktywnej zakładki
    				if( get_sub_field('aktywna_zakladka', 'option')):
    					$tytulZakladkiActive = "active";
    				else:
    					$tytulZakladkiActive = "";
    				endif;
    			?>
    			<li role="presentation" class="<?php echo $tytulZakladkiActive; ?>"><a href="#<?php echo $tytulZakladkiSlug; ?>" aria-controls="<?php echo $tytulZakladki; ?>" role="tab" data-toggle="tab"><?php echo $tytulZakladki; ?></a></li>
    		<?php endwhile; ?>			
    	</ul>
    
    	<!-- Tab panes -->
    	<div class="tab-content">
    		<?php $n = 0; 
    		?>
    		<?php while ( have_rows('ustawienia_centrum_pomocy', 'option') ) : the_row(); ?>
    			<?php //ACF Fields setup
    				//$tytulZakladki = get_sub_field_object('tytul_zakladki_glownej', 'option');
    				$tytulZakladki = get_sub_field('tytul_zakladki_glownej', 'option');
    				$tytulZakladkiSlug = zamienione($tytulZakladki);
    			?>
    			<div role="tabpanel" class="tab-pane <?php if( get_sub_field('aktywna_zakladka', 'option')): ?> active<?php endif; ?>" id="<?php echo $tytulZakladkiSlug; ?>">
    				
    				<div class="panel-group" id="accordion-<?php echo $tytulZakladkiSlug; ?>" role="tablist" aria-multiselectable="true">
    				<?php
    				/* Główna pętla */
    					$args = array(
    						'post_type' => 'faq',
    						'posts_per_page' => -1,
    						'orderby' => 'date',
    						'taxonomy' => 'kategoria_faq',
    						'term' => $tytulZakladkiSlug,
    						'order' => 'DESC',
    					);
    					
    					$fullnewsloop = new WP_Query($args);
    					if($fullnewsloop->have_posts()): 
    					$i = 1; 
    					while($fullnewsloop->have_posts()): $fullnewsloop->the_post(); 
    
    					?>
    						<div class="panel panel-default">
    							<?php // Content to show ?>
    						</div>
    					<?php $i++; endwhile; endif;
    					wp_reset_query();
    				?>
    				</div>
    			</div>
    		<?php endwhile; ?>	
    	</div>
    </div>
    <?php endif; ?>

    Once I got to the second level, things start to complicate.
    1. I have no access to $tytulZakladki, which is 1st level tabs title.
    2. That is why content gets generated only for the first tab.
    3. I need to limit listed posts by it’s tag (on the second level).

    Here is the code for 2 repeaters that has issues 🙂

    <?php if( have_rows('ustawienia_centrum_pomocy', 'option') ): ?>		
    <div id="politykaTabs">
    	<ul class="nav nav-tabs" role="tablist">
    		
    		<?php //Generowanie zakładek 1GIEGO POZIOMU ?>	
    		<?php while ( have_rows('ustawienia_centrum_pomocy', 'option') ) : the_row(); ?>
    			<?php //ACF Fields setup
    				//$tytulZakladki = get_sub_field_object('tytul_zakladki_glownej', 'option');
    				$tytulZakladki = get_sub_field('tytul_zakladki_glownej', 'option');
    				$tytulZakladkiSlug = zamienione($tytulZakladki);
    				
    				//Ustawianie aktywnej zakładki
    				if( get_sub_field('aktywna_zakladka', 'option')):
    					$tytulZakladkiActive = "active";
    				else:
    					$tytulZakladkiActive = "";
    				endif;
    			?>
    			<li role="presentation" class="<?php echo $tytulZakladkiActive; ?>"><a href="#<?php echo $tytulZakladkiSlug; ?>" aria-controls="<?php echo $tytulZakladki; ?>" role="tab" data-toggle="tab"><?php echo $tytulZakladki; ?></a></li>
    		<?php endwhile; ?>			
    	</ul>
    
    	<?php //Generowanie treści zakładek 1GIEGO POZIOMU ?>	
    	<div class="tab-content">
    		<?php $n = 0; ?>
    		<?php while ( have_rows('ustawienia_centrum_pomocy', 'option') ) : the_row(); ?>
    			<?php //ACF Fields setup
    				//$tytulZakladki = get_sub_field_object('tytul_zakladki_glownej', 'option');
    				$tytulZakladki = get_sub_field('tytul_zakladki_glownej', 'option');
    				$tytulZakladkiSlug = zamienione($tytulZakladki);
    				
    				//Ustawianie aktywnej zakładki
    				if( get_sub_field('aktywna_zakladka', 'option')):
    					$tytulZakladkiActive = "active";
    				else:
    					$tytulZakladkiActive = "";
    				endif;
    			?>
    			<div role="tabpanel" class="tab-pane <?php echo $tytulZakladkiActive; ?>" id="<?php echo $tytulZakladkiSlug; ?>">
    			
    				<?php ////Generowanie zakładek 2GIEGO POZIOMU ?>	
    				<?php if( have_rows('zakladki_2gi_poziom', 'option') ): ?>
    				<ul class="nav nav-tabs" role="tablist">
    					<!-- Nav tabs -->
    					<?php while ( have_rows('zakladki_2gi_poziom', 'option') ) : the_row(); ?>
    					<?php //ACF Fields setup
    						$tytulZakladkiSub = get_sub_field('tytul_zakladki_2gi_poziom', 'option');
    						$tytulZakladkiSlugSub = zamienione($tytulZakladkiSub);
    						
    						//Ustawianie aktywnej zakładki
    						if( get_sub_field('aktywna_zakladka_2gi', 'option')):
    							$tytulZakladkiActiveSub = "active";
    						else:
    							$tytulZakladkiActiveSub = "";
    						endif;
    					?>
    					
    						<li role="presentation" class="<?php echo $tytulZakladkiActiveSub; ?>"><a href="#<?php echo $tytulZakladkiSlugSub; ?>" aria-controls="<?php echo $tytulZakladkiSub; ?>" role="tab" data-toggle="tab"><?php echo $tytulZakladkiSub; ?></a></li>
    					
    					<?php endwhile; ?>			
    				</ul>
    				<?php endif; ?>
    				
    				<?php ////Generowanie treści zakładek 2GIEGO POZIOMU ?>	
    				<?php if( have_rows('zakladki_2gi_poziom', 'option') ): ?>
    					<div class="tab-content">
    					
    					<?php while ( have_rows('zakladki_2gi_poziom', 'option') ) : the_row(); ?>
    					<?php //ACF Fields setup
    						$tytulZakladkiSub = get_sub_field('tytul_zakladki_2gi_poziom', 'option');
    						$tytulZakladkiSlugSub = zamienione($tytulZakladkiSub);
    																
    						//Ustawianie aktywnej zakładki
    						if( get_sub_field('aktywna_zakladka_2gi', 'option')):
    							$tytulZakladkiActiveSub = "active";
    						else:
    							$tytulZakladkiActiveSub = "";
    						endif;
    					?>
    					<div role="tabpanel" class="tab-pane <?php echo $tytulZakladkiActiveSub; ?>" id="<?php echo $tytulZakladkiSlugSub; ?>-<?php echo $tytulZakladkiSlug; ?>">
    						<div class="panel-group" id="accordion-<?php echo $tytulZakladkiSlugSub; ?>" role="tablist" aria-multiselectable="true">
    							<?php
    							/* Główna pętla */
    								$args = array(
    									'post_type' => 'faq',
    									'posts_per_page' => -1,
    									'orderby' => 'date',
    									'taxonomy' => 'kategoria_faq',
    									'term' => $tytulZakladkiSlug,
    									//'tag' => 'ogolne',
    									'order' => 'DESC',
    								);
    								
    								$fullnewsloop = new WP_Query($args);
    								if($fullnewsloop->have_posts()): 
    								$i = 1; 
    								while($fullnewsloop->have_posts()): $fullnewsloop->the_post(); 
    								?>
    									<div class="panel panel-default">
    										<?php // Content to show ?>
    									</div>
    								<?php $i++; endwhile; endif;
    								wp_reset_query();
    							?>
    						</div>
    					</div>
    						
    					<?php endwhile; ?>			
    					</div>
    				<?php endif; ?>
    				
    			</div>
    		<?php endwhile; ?>	
    	</div>
    </div>
    <?php endif; ?>
  • And this is how it looks like.

  • Hello, anyone ? 🙂

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

You must be logged in to reply to this topic.