Я не знаю php, но я пытаюсь сделать эту работу. Начнем отсюда.
$groups = array();
foreach ($related->posts as $post) {
$groups[$post->post_type][] = $post;
}
Получите размер $ групп здесь.
например $ sizeof_groups = sizeof ($ groups);
Если вы поделите $ sizeof_groups на 4 (вы сказали, что вам нужно четыре столбца), вы получите количество строк, которое вам понадобится. например, если $ sizeof_groups равен 4 (4 неупорядоченных списка), вам просто нужна 1 строка.
so $ numberOfRows = $ sizeof_groups / 4;
Остаток тоже может быть. Если есть, нам понадобится еще один «ряд».
if($sizeof_groups % 4 != 0 )
$numberOfRows++;
Теперь
for(i=0 ; i<=4 ; i++) // you need four columns
{
echo '<div class="myDiv">';
for(j=0 ; j<=$numberOfRows; j++)
{
foreach ($groups as $name => $posts) {
printf('<div><ul class="related-group related-%s ">', htmlspecialchars($name));
foreach ($posts as $post) {
printf('<li class="related-item"><span><a href="'.get_permalink($post->ID).'" rel="permalink">'.get_the_post_thumbnail($post->id, '32').'</a></span><span><a href="'.get_permalink($post->ID).'" rel="permalink">'.$post->post_title.'</a></span></li>');
}
echo '</ul></div>';
}
echo '</div>';
}
СТАРЫЙ КОММЕНТАРИЙ:
Полагаю, вы можете настроить свой php-код для отображения двух списков в одном div. Надеюсь, это поможет:
HTML:
<div class="myDiv">
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
<div>
<ul>
<li>one</li>
<li>two</li>
</ul>
</div>
</div>
<div class="myDiv">
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
</div>
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
</ul>
</div>
</div>
<div class="myDiv">
<div>
<ul>
<li>one</li>
<li>two</li>
</ul>
</div>
<div>
<ul>
<li>one</li>
<li>two</li>
<li>three</li>
<li>four</li>
</ul>
</div>
</div>
CSS:
div {
width: 50px;
border: 1px solid #000;
float: left;
}
.myDiv{
width: 50 px;
float left;
}
br { clear: left; }