Проблема в вашем коде - это возврат.
return возвращает значение и останавливает дальнейшее выполнение кода, что означает, что весь код после return не будет выполняться.
Вы запускаете свой foreach, запускаете код и используйте return, вы передали heredo c в return (первая итерация l oop), и все, return останавливает все дальнейшее выполнение кода.
Вам нужно создать переменную за пределами l oop, скажем, $html = '';
, и каждая итерация объединяет html, который вам нужен. После выполнения foreach вы можете проверить, не является ли $html
пустым, а затем вернуть $html
$html = '';
foreach ($recent_posts as $post) {
$perm = get_permalink($post['ID']);
$imgurl = get_the_post_thumbnail_url($post['ID'], 'full');
$html .= '<div class="videoposter">';
$html .= '<a class="posterlink" href="' . $perm . '">';
$html .= '<img class="posterimg" src="' . $imgurl . '">';
$html .= '</a>';
$html .= '</div>';
}
if (!empty($html)) {
return $html;
}
Вы, конечно, можете использовать heredo c, если хотите.
Надеюсь, это поможет =]