Как вывести статьи по рубрикам на отдельной странице

В используемом шаблоне создаем файл main-page.php (пример как для главной, копируем из page.php). В начале файла добавляем (таким образом файл попадает в шаблоны):

<?php
/*
Template Name: Главная страница
*/
?>

Заходим в меню админки: Страницы -> Добавить новую, затем в Атрибуты страницы -> Шаблон выбираем наше оформление (в примере Главная страница).

Вывод рубрик

<?php
$arg_cat = [
	'orderby' => 'name', // сортировка по названию
	'order' => 'ASC', // сортировка от меньшего к большему
	'hide_empty' => 1, // скрыть пустые рубрики
	'exclude' => 19, // id рубрики, которые надо исключить
	'include' => '', // id рубрики, из которых надо выводить
	'taxonomy' => 'category', // название таксономии
];
$categories = get_categories($arg_cat);
if($categories){
	foreach( $categories as $cat ){
		echo $cat->name;
	}
}
?>

Вывод записей

<?php
$arg_posts = [
	'orderby' => 'name', // сортировка по имени
	'order' => 'ASC', // от меньшего к большему
	'posts_per_page' => 3, // по три поста
	'post_type' => 'post', // тип записи "посты"
	'post_status' => 'publish', // опубликованные посты
	'cat' => $cat->cat_ID, // получаем id рубрик
];
$query = new WP_Query($arg_posts);
if($query->have_posts()){
	while($query->have_posts()){
		$query->the_post();
?>
<div class="main-page-post">
	<a href="<?php the_permalink(); ?>">
		<!--?php the_post_thumbnail( 'widgetfull' );?-->
	</a>
	<a href="<?php the_permalink(); ?>"><!--?php the_title(); ?--></a>
</div>
<?php
	}
	wp_reset_postdata();
}
?>