Вывод миниатюры первой записи в шаблоне архива
Здравствуйте! Проблема такая.
Галерея - это произвольный тип записи (custom post type) - yenot_gallery
Каждое изображение в галерее - это пост.
Посту можно задать рубрику (альбом) (делалось через register_taxonomy)
Вывести галерею получилось в шаблоне таксономии (taxonomy-phototype.php) при помощи get_queried_object(). (http://pifagor.kurs46.ru/phototype/%D0%BE%D1%81%D0%B5%D0%BD%D1%8C-2022/)
Но нужно еще в архиве вывести альбомы, и миниатюрой каждого альбома должна быть любая миниатюра входящего в этот альбом поста. http://pifagor.kurs46.ru/yenot_gallery/
Проблема в том, что выводится последняя добавленная фотка в этот тип записи вообще, а не последняя фотка конкретного альбома
<?php
$args = array(
'taxonomy' => array( 'phototype'), // название таксономии с WP 4.5
'orderby' => 'id',
'order' => 'DESC',
'hide_empty' => true,
);
$myterms = get_terms( $args );
$countterms = count($myterms);
/*var_dump($myterms);*/
echo '<p class="albums-amount">Альбомов: <span class="albums">'; echo $countterms; echo ' </p>' ;
echo '<div class="row">';
foreach( $myterms as $term ){
echo ' <div class="col-lg-4">
<div class="albums__item">';
// Цикл WordPress
if(have_posts() ){
the_post_thumbnail('album-grid');
// здесь выводится миниатюра, но миниатюра последней записи, а не последней записи альбома
wp_reset_query();
} else {
// текст/код, если постов нет
}
echo ' <div class="album-txt">';
echo '<div class="row">
<div class="col-lg-10">
<p class="photo-title">';
echo $term->name;
echo '<br>';
echo $term->description;
echo '
</p>
</div>
<div class="col-lg-2 photo-amount-wrap"><p class="photo-amount">'; echo $term->count;
echo '</p></div>
</div>
</div>
<a href="http://pifagor.kurs46.ru/phototype/'; echo $term->slug; echo '" class="album-bg album-bg-orange"></a>
</div>
</div>';
}
?>
Здравствуйте. Воспроизвёл Вашу структуру сайта у себя и вот решение:
<?php get_header(); ?> <?php // Получаем термы таксономии phototype $my_terms = get_terms( array( 'taxonomy' => array( 'phototype' ), // название таксономии с WP 4.5 'orderby' => 'id', 'order' => 'DESC', 'hide_empty' => true, ) ); // Если термы есть, то начнем обработку if ( $my_terms ) { ?> <p class="albums-amount">Альбомов: <span class="albums"><?php echo count( $my_terms ); ?></span></p> <div class="row"> <?php // Перебираем массив всех термов по одному foreach ( $my_terms as $term ) { /* * Получаем 1 пост для обложки альбома, он обязательно вернется, * т.к. в get_terms мы указали дать нам термы, у которых есть посты */ $term_posts = get_posts( array( 'numberposts' => 1, // 'post_type' => 'yenot_gallery', 'tax_query' => array( array( 'taxonomy' => 'phototype', 'field' => 'term_id', 'terms' => $term->term_id ) ) ) ); // Устанавливаем глобальные данные поста setup_postdata( $GLOBALS['post'] =& $term_posts[0] ); ?> <!-- Альбом --> <div class="col-lg-4"> <!-- Миниатюра --> <div class="albums__item"> <?php the_post_thumbnail( 'album-grid' ); ?> </div> <!-- Текст --> <div class="album-txt"> <div class="row"> <div class="col-lg-10"> <p class="photo-title"> <?php echo $term->name; ?><br> <?php echo $term->description; ?> </p> </div> <div class="col-lg-2 photo-amount-wrap"> <p class="photo-amount"><?php echo $term->count; ?></p> </div> </div> <a href="<?php echo get_term_link( $term ); ?>" class="album-bg album-bg-orange"></a> </div> </div> <?php // Обязательно возвращаем глобальную переменную $post в правильное состояние wp_reset_postdata(); } ?> </div> <?php } else { ?> <p>Извините, но альбомов не нашлось</p> <?php } ?> <?php get_footer(); ?>Спасибо!!! Помогло
Рад, что получилось. Если ответ на вопрос получен, отметьте его решенным, пожалуйста.