es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Campos Personalizados Avanzados: Repetidores

Estoy tratando de mostrar lo siguiente usando ACF:

(Hay varias secciones, así que hice esta sección repetida)
– Título de la sección
(Debajo del título de la sección hay varios paquetes, así que también hice esta sección repetida)
– Título del paquete
– Precio

Cada vez que agrego una sección, debería mostrarse como una nueva sección debajo de la sección anterior. En lugar de eso, se muestra dentro de la sección anterior.

¿Puedes señalarme qué estoy haciendo mal aquí?

<div class="pricing">
    <?php
    if(have_rows('packages')):
        while(have_rows('packages')) : the_row();?>
        <div class="pricing-section">
            <?php echo the_sub_field('section_title_and_details'); ?>
        </div>

        <div class="pricing-package-container">
            <?php if(have_rows('package_details')):
                while(have_rows('package_details')) : the_row(); ?>
                <div class="pricing-packages">
                    <h3><?php echo the_sub_field('package_name'); ?></h3>
                    <h4><?php echo the_sub_field('price'); ?></h4>
                </div>
                <?php endwhile;
            endif;
        endwhile;
    endif;
    ?>
    </div>
</div>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema que estás enfrentando es que el repetidor interno para los paquetes todavía está dentro del repetidor externo para las secciones, lo que hace que los paquetes de cada sección se muestren dentro de la sección anterior.

    Para resolver este problema, mueve la etiqueta de cierre div del repetidor externo para las secciones después de la etiqueta de cierre div del repetidor interno para los paquetes, de esta manera:

    <div class="pricing">
        <?php if (have_rows('packages')): ?>
            <?php while (have_rows('packages')): the_row(); ?>
                <div class="pricing-section">
                    <?php echo the_sub_field('section_title_and_details'); ?>
                </div>
    
                <div class="pricing-package-container">
                    <?php if (have_rows('package_details')): ?>
                        <?php while (have_rows('package_details')): the_row(); ?>
                            <div class="pricing-packages">
                                <h3><?php echo the_sub_field('package_name'); ?></h3>
                                <h4><?php echo the_sub_field('price'); ?></h4>
                            </div>
                        <?php endwhile; ?>
                    <?php endif; ?>
                </div>
            <?php endwhile; ?>
        <?php endif; ?>
    </div>
    

    Esto asegurará que el repetidor interno para los paquetes se cierre antes de que se muestre la siguiente sección, evitando que los paquetes de cada sección se muestren dentro de la sección anterior.

Comments are closed.