@Differlp

Как вывести тип поля Repeater плагина ACF?

В плагине ACF (кастомные поля) следующие типы полей которые я сейчас использую:
Repeater https://www.advancedcustomfields.com/resources/rep...
Relationship https://www.advancedcustomfields.com/resources/rel...
Post Object https://www.advancedcustomfields.com/resources/pos...

При помощи Relationship https://www.advancedcustomfields.com/resources/rel... вывожу:
<div class="main-block">
<?php 

$posts = get_sub_field('add_item');

if( $posts ): ?>

    <div class="add-item">
    <?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
        <?php setup_postdata($post); ?>
        <div>
                        
                        <table width="100%">            
            <tbody>                     
                        <tr>    
                                <td width="25%"> <?php echo get_the_post_thumbnail( $id, 'thumbnail', array('class' => 'aligncenter') ); ?> </td>       

                                <td width="75%"><h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                                <p><?php the_field('descr_top'); ?></p>
                                
                        </tr>
                </tbody>
        </table> 
                         
        </div>

    <?php endforeach; ?>
    </div>
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>


При помощи Post Object https://www.advancedcustomfields.com/resources/pos... вывожу:
<?php
/*
*  Loop through post objects (assuming this is a multi-select field) ( setup postdata )
*  Using this method, you can use all the normal WP functions as the $post object is temporarily initialized within the loop
*  Read more: http://codex.wordpress.org/Template_Tags/get_posts#Reset_after_Postlists_with_offset
*/

$post_objects = get_sub_field('add_links');

if( $post_objects ): ?>
    <ul class="add-links">
    <?php foreach( $post_objects as $post): // variable must be called $post (IMPORTANT) ?>
        <?php setup_postdata($post); ?>
        <li>
            <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
        </li>
    <?php endforeach; ?>
    </ul>
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
<?php endif; ?>
</div>


Эти два поля нужно вывести в поле Повторителе (Repeater) https://www.advancedcustomfields.com/resources/rep... (В админке при помощи Повторителя можно нажимать «добавить блок» и два предыдущих поля с нужными данными должны выводится в цикле самого Повторителя)
Эти два поля по отдельности выводятся как нужно, но в Повторителе https://www.advancedcustomfields.com/resources/rep... у меня не получается их вывести.

Вот в один из этих циклов Повторителя https://www.advancedcustomfields.com/resources/rep... нужно встроить код предыдущих двух полей так, чтобы блоки повторялись с разными данными выбранными в админке WP.

Помогите с решением задачи.

Что выводится сейчас без повторителя (Repeater):
tUtQpho.jpg
  • Вопрос задан
  • 3706 просмотров
Пригласить эксперта
Ответы на вопрос 1
trampick
@trampick
Веб-разработчик
Вы постарались подробно все описать, но я все равно ничего не понял:)

acf - это плагин для создания произвольных полей для постов разных типов.

Произвольное поле если грубо - это тип данных у которых есть название(ключ) и значение, а так же id поста к которому это поле принадлежит. У одного поста может быть много произвольных полей с одним ключем и множеством значений.

Ключ в вашем случае это field name, которое вы указываете при создании типа произвольного поля для постов.

Что бы получить произвольное поле нужно использовать функцию
get_post_meta( int $post_id, string $key = '', boo...
,где
$post_id - это идентификатор поста. Его можно получить в цикле через функцию get_the_ID();.
$key - это как раз field name. Его надо писать в кавычках, так как это строка.
$single - если true, то функция вернет 1 значение строку. Если false, то функция вернет массив значений - это актуально как раз когда несколько произвольных полей с одинаковым именем.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы