Архивная страница произвольного типа записей
Чтобы создаваемый тип записей имел архивную страницу, необходимо при его создании указать параметр 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();
Показать код