Повторитель Wordpress ACF не зацикливается при возврате значений - PullRequest
0 голосов
/ 04 февраля 2020

По некоторым причинам, мой l oop будет отображать только первый ряд из повторителя. Как я могу заставить l oop создать ссылки для всех добавленных строк?

function related_pages_shortcode2() {
    if( have_rows('related_pages') ):
    while( have_rows('related_pages') ): the_row(); 

    $type = get_sub_field('type');
    $name = get_sub_field('name');
    $link = get_sub_field('url');

    $related_page = '<strong>' . $type . ': </strong>' . '<a href="' . $link . '">' . $name . '</a>';

    return $related_page;

    endwhile;

else :

endif;
}

add_shortcode( 'related_pages2', 'related_pages_shortcode2' );

1 Ответ

0 голосов
/ 04 февраля 2020

Вы возвращаетесь в своей функции (предотвращая дальнейшее выполнение функции) вместо сохранения предыдущего вывода и добавления к нему новых строк. Измените свою функцию таким образом, чтобы она также сохраняла предыдущий контент, сгенерированный в то время как l oop:

    if( have_rows('related_pages') ):
        $output = ''; // initialize the output buffer as an empty string
        while( have_rows('related_pages') ): the_row(); 

            $type = get_sub_field('type');
            $name = get_sub_field('name');
            $link = get_sub_field('url');

            $related_page = '<strong>' . $type . ': </strong>' . '<a href="' . $link . '">' . $name . '</a>';

            $output .= $related_page; // in this way you append the new row to the previous output

        endwhile;

    endif;
...