Архивная страница произвольного типа записей

Чтобы создаваемый тип записей имел архивную страницу, необходимо при его создании указать параметр has_archive равный true. Пример:

Скопировано
add_action( 'init', function() {
	$labels = array(
		'name' => 'Заказы',
		'singular_name' => 'Заказ',
		'add_new' => 'Добавить новый',
		'add_new_item' => 'Добавить новый заказ',
		'edit_item' => 'Редактировать заказ'
	);
	$args = array(
		'labels'        => $labels,
		'public'        => true,
		'has_archive'	=> true,
		'menu_position' => 5,
		'supports'      => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' )
	);
	register_post_type( 'orders', $args );
});
Показать код

И тогда для этого типа записей будет включена поддержка архивов, получить доступ к которой можно по ссылке вида

 http://site.ru/orders/ 

где orders - слаг нового типа записей, указанный в функции register_post_type.

Подключаем отдельный шаблон для архивной страницы произвольного типа записей

По умолчанию WordPress для отображения такой архивной страницы будет использовать файл archive.php, а если он не найден, то файл index.php из каталога используемого шаблона.

Мы можем изменить это поведение, создав файл с названием archive-POST_TYPE.php, где вместо POST_TYPE надо вписать слаг нужного типа записей.

К примеру, для созданного выше типа записей orders такой файл будет называться archive-orders.php.

Ну а внутри этого файла выводим записи как на обычной архивной странице. Самый простой код может быть примерно таким:

Скопировано
<?php
get_header();
while( have_posts() ) {
the_post();
$title = get_the_title();
$link = get_permalink();
echo "<h3><a href='$link'>$title</a><h3>";
}
get_footer();
Показать код