Получить первую строку из поля повторителя в цикле

Я делаю WP-сайт, используя расширенные настраиваемые поля. На одной странице я хочу повторить цикл со всеми сообщениями, имеющими категорию «Студия». Затем я хочу показать первое изображение из подполя с именем «studio_project_dia_img». Я могу показать все изображения из Repeater_field, но не только первое

Этот код работает (только он повторяет все строки из поля повторителя):

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">

        <li class="thumbs">
            <a href="studio-single.html" class="clearfix">
            <?php if (get_field('studio_project_dia')) : while(has_sub_field('studio_project_dia')): ?>

                    <img src="<?php echo get_sub_field('studio_project_dia_img', $post->ID); ?>" />
            <?php endwhile; endif; ?>
                    <div class="thumbsText">
                        <h2><?php the_title(); ?></h2>
                        <h3><?php the_tags( 'Tags: ', '&nbsp;/&nbsp; ', ''); ?></h3>
                    </div>
            </a>



        </div>

        <?php edit_post_link('Edit this entry','','.'); ?>

    </div>

<?php endwhile; endif; ?>

этот код не:

    <div <?php post_class() ?> id="post-<?php the_ID(); ?>">

        <li class="thumbs">
            <a href="studio-single.html" class="clearfix">
            <?php if (get_field('studio_project_dia')) : while(has_sub_field('studio_project_dia')): ?>
                    <?php
                        $rows = get_sub_field('studio_project_dia_img', $post->ID);
                        $first_row = $rows[0];
                        $first_row_image = $first_row['studio_project_dia_img'];

                        $image = wp_get_attachment_image_src( $first_row_image, 'full' );
                    // url = $image[0];
                    // width = $image[1];
                    // height = $image[2];
                    ?>
                    <img src="<?php echo $image[0] ?>" />
            <?php endwhile; endif; ?>
                    <div class="thumbsText">
                        <h2><?php the_title(); ?></h2>
                        <h3><?php the_tags( 'Tags: ', '&nbsp;/&nbsp; ', ''); ?></h3>
                    </div>
            </a>



        </div>

        <?php edit_post_link('Edit this entry','','.'); ?>

    </div>

<?php endwhile; endif; ?>

person Carl Papworth    schedule 02.04.2014    source источник


Ответы (3)


В свой первый код добавьте break; после тега img следующим образом:

<?php if (get_field('studio_project_dia')) : while(has_sub_field('studio_project_dia')): ?>
    <img src="<?php echo get_sub_field('studio_project_dia_img', $post->ID); ?>" />
<?php break; endwhile; endif; ?>

С break цикл while остановится.

person doydoy44    schedule 02.04.2014
comment
Это только повторяет разрыв текста; между каждым изображением. Однако, если вы сделаете это, это сработает: <?php if (get_field('studio_project_dia')) : while(has_sub_field('studio_project_dia')): ?> <img src="<?php echo get_sub_field('studio_project_dia_img', $post->ID); ?>" /> <?php break; endwhile; endif; ?> - person Carl Papworth; 02.04.2014
comment
Конечно, было то, что я хотел написать. :) Я изменил свой ответ. спасибо, что вы вернулись. :) - person doydoy44; 02.04.2014
comment
потому что я исправил свою ошибку невнимательности благодаря вам, и я вежлив. ;) - person doydoy44; 02.04.2014

См. выше, только:

<?php if (get_field('studio_project_dia')) : while(has_sub_field('studio_project_dia')): ?>
    <img src="<?php echo get_sub_field('studio_project_dia_img', $post->ID); ?>" />

<?php break; endwhile; endif; ?>
person Carl Papworth    schedule 02.04.2014

<?php 
    if(have_rows('client_logo') ):
    while ( have_rows('client_logo') ) : the_row(); 
?>

<?php   
    $image = get_sub_field('logo');
    $size = 'full'; // (thumbnail, medium, large, full or custom size)

    if( $image ) {
        echo wp_get_attachment_image( $image, $size );
    } 
?>

<?php endwhile;
    else :
    // no rows found
    endif;
?>

Я использовал этот код, чтобы получить поле повторителя, затем подполе и заставить его отображать изображение, надеюсь, это поможет вам найти свое решение.

person Lee Mullen    schedule 12.01.2015