Показывать дочернее поле повторителя дополнительных настраиваемых полей, только если оно существует в сообщении

Я использую поле повторителя для отображения продуктов на странице. Для некоторых из них требуется ссылка для скачивания PDF, а для некоторых нет. Мне нужно иметь возможность отображать ссылку «Загрузить PDF» только тогда, когда PDF-файл был загружен в дочернее поле повторителя загрузки файла.

Вот с чем я работаю до сих пор:

<?php 
            $rows = get_field('artwork_example');
            if($rows) {
                foreach($rows as $row) {
                    echo '<div class="artwork-content"><img src="', $row['image'];
                    echo '"><div class="right"><h2>', $row['title'];
                    echo '</h2><p>', $row['text'];
                    echo '</p>';
                    if ( get_sub_field('upload_pdf') ) echo '<p><a class="download" href="', $row['upload_pdf'];
                    if ( get_sub_field('upload_pdf') ) echo '">Download PDF</a></p></div></div>'; 
        } 
    }
?>

Любая помощь приветствуется, спасибо!


person Matt Kempster    schedule 29.10.2013    source источник


Ответы (2)


Используйте эту структуру с циклом

if ( have_posts() ) while ( have_posts() ) : the_post(); ?>

<?php if(get_field('photo_repeater')): ?>

<?php while(has_sub_field('photo_repeater')): ?>

<?php if(get_sub_field('photo_slider')): ?>

<?php while( has_sub_field('photo_slider') ): ?> 

        <?php 
        $img_url = get_sub_field('photo_block');
        $image = aq_resize( $img_url, 200, 200, true );
        ?>
        <img class="image_news" src="<?php echo $image; ?>"  alt="111" />
<?php endwhile; ?>     

<?php endif; ?>

<?php endwhile; ?>   

<?php endif; ?>

<?php endwhile; ?> 

PS - для проверки подполя внутри повторителя - повторитель

if(get_sub_field('photo_block'))(....)
person AlexP    schedule 14.11.2013

Вы можете просто использовать:

<?php if ($row['upload_pdf'])
{
  //show link
}
else
{
  //hide
}

РЕДАКТИРОВАТЬ:

Я бы сделал это так:

<?php 
            $rows = get_field('artwork_example');
            if($rows) {
                foreach($rows as $row) {
                    echo '<div class="artwork-content"><img src="', $row['image'];
                    echo '"><div class="right"><h2>', $row['title'];
                    echo '</h2><p>', $row['text'];
                    echo '</p>';

                    if ( $row['upload_pdf'])
                    {
                        <a class="download" href="<?php echo $row['url']; ?>">Download PDF</a> <?php
                    }
                    else
                    {
                        echo '';
                    }
        } 
    }
?>

Кроме того, если вы не знаете, как получить определенные значения из ACF, используйте var_dump.

var_dump($row);

Удачи!

person SBD    schedule 29.10.2013
comment
Спасибо, как мне интегрировать это в приведенный выше код? Кажется, ломается, как я пытался. - person Matt Kempster; 30.10.2013