Отображение изображений записей из произвольного типа записей на главной странице
Я работаю с темой underscores и пытаюсь создать свой собственный шаблон.
Я создал шаблон главной страницы и файл single-post для произвольных типов записей.
Я пытаюсь отобразить на главной странице что-то вроде галереи с изображениями записей из каждого произвольного типа записей вместе с заголовком и метками.
Я пробовал разные способы, думал, что это можно сделать с помощью wp_get_archives
, но так и не получилось.
Если у вас есть какие-либо предложения, это было бы здорово.
Спасибо!
Использование wp_get_archives
вернёт предопределённый шаблон для результатов. Вам нужен собственный запрос и шаблон для этого. Поскольку я не знаю, что именно вы ищете, я предложу базовый код для вашей ситуации:
// Получаем список категорий
$terms = get_terms(array('taxonomy' => 'category'));
// Запускаем запрос для каждой категории
foreach ($terms as $term){
$args = array(
'post_type' => 'custom_type',
'posts_per_page' => '1',
'order_by' => 'date',
'order' => 'ASC',
'cat' => $term->ID
);
$new_query = new WP_Query ($args);
if ($new_query->have_posts()) {
while($new_query->have_posts()){
$new_query->the_post();
// Заголовок записи
the_title();
// Миниатюра записи
the_post_thumbnail('thumbnail');
}
}
wp_reset_postdata();
}
Этот код выведет по 1 записи из каждой категории, а также их миниатюру и заголовок. Однако он создаст много запросов, если у вас много категорий (например, 50 или более). Рекомендую использовать его с плагином кеширования.
Также вы можете получить список записей и отобразить их в виде галереи вместе с названием категории:
$args = array(
'post_type' => 'custom_type', // Ваш пользовательский тип записи
'posts_per_page' => '8', // Измените число на желаемое
'order_by' => 'date', // Необязательная сортировка
'order' => 'ASC',
);
$new_query = new WP_Query ($args);
if ($new_query->have_posts()) {
while($new_query->have_posts()){
$new_query->the_post();
the_title();
the_post_thumbnail('thumbnail');
// Получаем список категорий записи
$categories = get_the_category($post->ID);
foreach ($categories as $category) {
echo $category->name;
}
}
}
wp_reset_postdata();

Вы можете использовать цикл WordPress, который доступен в любой теме. Вот базовый фрагмент кода. Скопируйте его в файл главной страницы и проверьте, соответствует ли результат ожиданиям:
<?php if( have_posts() ) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class="blog">
<h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1>
<hr />
<div class="text-box">
<?php
if( has_post_thumbnail() ) {
echo '<div style="float:left;">';
the_post_thumbnail('thumbnail');
echo '</div>';
}
?>
</div>
</div>
<?php endwhile; ?>
<?php endif; ?>
Это код из моей дочерней темы.
