<?php $cats = get_categories(); // Получаем список всех категорий
foreach ($cats as $cat) {
echo "<h3>".$cat->cat_name."</h3>"; // Получаем название одной категории
echo "<ul class='uldotted'>";
query_posts('posts_per_page=-1&cat='.$cat->cat_ID); // изменяем параметры основного цикла WordPress и затем выводим посты
while(have_posts()) {
the_post();
$category = get_the_category(); // получаем список категорий для одного поста
if ($category[0]->cat_ID == $cat->cat_ID) { // Сравниваем список всех категорий с ID первой категории этого поста, и если совпадает, то выводим ссылку на пост только один раз, даже если он указан в нескольких категориях
echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
}
}
echo "</ul>";
}
?>