WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

Вывод миниатюры первой записи в шаблоне архива

Здравствуйте! Проблема такая.
Галерея - это произвольный тип записи (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>';
}
			?>
1
МаксЕнот
6.8 лет назад
  • 2
    campusboy4752 www.youtube.com/c/wpplus

    Здравствуйте. Воспроизвёл Вашу структуру сайта у себя и вот решение:

    <?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(); ?>
    МаксЕнот 6.8 лет назад

    Спасибо!!! Помогло

    campusboy 6.8 лет назад

    Рад, что получилось. Если ответ на вопрос получен, отметьте его решенным, пожалуйста.

    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация