WordPress как на ладони
wordpress jino

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

Здравствуйте! Проблема такая.
Галерея - это произвольный тип записи (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
МаксЕнот 4 месяца назад
  • 2
    campusboy1844 cайт: wp-plus.ru

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

    <?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(); ?>
    МаксЕнот 3 месяца назад

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

    campusboy 3 месяца назад

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

    МаксЕнот 3 месяца назад

    А я не вижу, как тут это сделать. Какую кнопку надо нажать?

    campusboy 3 месяца назад

    По идее, где то тут должна появится галочка при наведении:

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