Вы возвращаетесь в своей функции (предотвращая дальнейшее выполнение функции) вместо сохранения предыдущего вывода и добавления к нему новых строк. Измените свою функцию таким образом, чтобы она также сохраняла предыдущий контент, сгенерированный в то время как 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;