Поддержка Проблемы и решения Как объединить два цикла в колонки

  • Решено aleks

    (@aleks683)


    Доброго времени суток! Целый день голову ломаю.

    Есть код вывода последних записей рубрики

    <?php
     $pc = new WP_Query('cat=17&orderby=date&posts_per_page=5'); ?>
     <?php while ($pc->have_posts()) : $pc->the_post(); ?>
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array()); ?></a>
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
     </div>
     <?php endwhile; ?>

    и аналогичный другой рубрики

    <?php
     $pc = new WP_Query('cat=18&orderby=date&posts_per_page=5'); ?>
     <?php while ($pc->have_posts()) : $pc->the_post(); ?>
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail(array()); ?></a>
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
     </div>
     <?php endwhile; ?>

    Задача объединить их вместе (чтобы шли в две колонки), но в верху перед ними вставить еще один цикл

    <div class="post-new2">Пост опубликован: <?php the_time('j F Y'); ?> </div>

    В результате должно быть вот так:

    Пост опубликован: 21 февраля 2017
    Пост категории 17 Пост категории 18

    Пост опубликован: 20 февраля 2017
    Пост категории — 2 17 Пост категории -2 18

    и т.д.

    Никто не знает как это дело можно правильно реализовать?

Просмотр 12 ответов — с 16 по 27 (всего 27)
  • <?php 
    	$pc = new WP_Query(array( 'orderby' => 'date', 'posts_per_page' => 5 )); ?>
    ?>
    
    <table>
    	
    <?php if ( $pc->have_posts() ) : while ( $pc->have_posts() ) : $pc->the_post(); ?>
    
    	<tr>
    		<td colspan="2">Пост опубликован: <?php the_time( the_time('j F Y'); ); ?></td>
    	</tr>
    
    	<?php $categories = get_the_category( get_the_id() ); ?>
    
    	<tr>
    		<?php foreach ($categories as $category): ?>
    			<td><?php echo  $category->cat_name; ?></td>
    		<?php endforeach; ?>
    	</tr>
    
    <?php endwhile; ?>
    <!-- post navigation -->
    <?php else: ?>
    <!-- no posts found -->
    <?php endif; ?>
    
    </table>
    • Ответ изменён 7 лет, 1 месяц назад пользователем Riskful.
    Автор aleks

    (@aleks683)

    <?php 
    	$pc = new WP_Query(array( 'orderby' => 'date', 'posts_per_page' => 5 )); ?>
    ?>
    
    <table>
    	
    <?php if ( $pc->have_posts() ) : while ( $pc->have_posts() ) : $pc->the_post(); ?>
    
    	<tr>
    		<td colspan="2">Пост опубликован: <?php the_time( the_time('j F Y'); ); ?></td>
    	</tr>
    
    	<?php $categories = get_the_category( get_the_id() ); ?>
    
    	<tr>
    		<?php foreach ($categories as $category): ?>
    			<td><?php echo  $category->cat_name; ?></td>
    		<?php endforeach; ?>
    	</tr>
    
    <?php endwhile; ?>
    <!-- post navigation -->
    <?php else: ?>
    <!-- no posts found -->
    <?php endif; ?>
    
    </table>

    код не работает с учетом что 3 строка лишняя

    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.
    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.

    3я — строка лишняя — это какая?

    Автор aleks

    (@aleks683)

    ?> — лишнее закрытие

    <td colspan="2">Пост опубликован: <?php the_time( the_time('j F Y'); ); ?></td>

    замени на

    <td colspan="2">Пост опубликован: <?php the_time('j F Y'); ?></td>

    Ночь дает о себе знать. Да и убери лишнее закрытие.

    • Ответ изменён 7 лет, 1 месяц назад пользователем Riskful.
    • Ответ изменён 7 лет, 1 месяц назад пользователем Riskful.
    • Ответ изменён 7 лет, 1 месяц назад пользователем Riskful.
    Автор aleks

    (@aleks683)

    Работает но это не то
    Мне нужно, что бы с одной даты публиковалось по одной записи с указанных категорий в одну линейку

    вот так вот
    пример

    Автор aleks

    (@aleks683)

    Вот так что то получилось похожее

    <?php 
    	$pc = new WP_Query(array( 'orderby' => 'date', 'posts_per_page' => 5 )); ?>
    
    <table>
    <?php
     $pc = new WP_Query('cat=17&orderby=date&posts_per_page=5');
     ?>
    <?php if ( $pc->have_posts() ) : while ( $pc->have_posts() ) : $pc->the_post(); ?>
    
    	<tr>
    		<td colspan="2"><div class="post-title">Пост опубликован: <?php the_time('j F Y'); ?> </div></td>
    	</tr>
    
    	<?php $categories = get_the_category( get_the_id() ); ?>
    
    	<tr>
    		<?php foreach ($categories as $category): ?>
    			<td><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'medium' ); ?></a></td>
    		<?php endforeach; ?>
    		<?php foreach ($categories as $category): ?>
    			<td>
     <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'medium' ); ?></a>
    </td>
    		<?php endforeach; ?>
    	</tr>
    
    <?php endwhile; ?>
    <!-- post navigation -->
    <?php else: ?>
    <!-- no posts found -->
    <?php endif; ?>
    
    </table>

    Только как сделать чтобы вместо второго

    <td><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'medium' ); ?></a></td>

    показывалась категория 18, а не 17 ???

    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.
    Автор aleks

    (@aleks683)

    Все сделал!!! Спасибо тебе riskful большое!

    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.

    я так и не понял, как у вас там разные даты у каждой записи, но выводится лишь одна дата публикации.

    Автор aleks

    (@aleks683)

    Я опять уперся с этим кодом =(

    Получается последняя дата стоит 28 февраля он выводит последние записи рубрик. Пример:

    Заголовок 28 февраля
    пост от 28 февраля и пост от 27 февраля

    а как сделать чтобы выводились не последние записи рубрики, а была привязка по датам?? Пример:

    Заголовок 28 февраля
    пост от 28 февраля и (пустота)

    Заголовок 27 февраля
    пост от 27 февраля и пост от 27 февраля

    Автор aleks

    (@aleks683)

    Вот рабочий код:

    <table>
    <?php
     $pc = new WP_Query('cat=175&orderby=date&posts_per_page=10');
     $pc2 = new WP_Query ('cat=176&orderby=date&posts_per_page=10');
     ?>
     
    <?php if ( $pc->have_posts() ) : while ( $pc->have_posts() ) : $pc->the_post(); ?>
    
    	<tr>
    		<td colspan="2"><?php the_time('j F Y'); ?> </td>
    	</tr>
    
    	<?php $categories = get_the_category( get_the_id() ); ?>
    
    	<tr>	
    		
    		<?php foreach ($categories as $category): ?>		
    <td>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'dom2-mini' ); ?></a>
        <div class="post-title-dom2"> <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></div>
    </td>	
    		<?php endforeach; ?>
    		
    		
    		
    		<?php foreach ($categories as $category): $pc2->the_post(); ?>
    <td>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'dom2-mini' ); ?></a>
        <div class="post-title-dom2"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a></div>
    </td>
    		<?php endforeach; ?>
    	
    	</tr>
    	
    
    <?php endwhile; ?>
    <!-- post navigation -->
    <?php else: ?>
    <!-- no posts found -->
    <?php endif; ?>
    
    </table>

    Но всегда выводятся последние записи категорий. Как я понимаю надо привязать

    $pc = new WP_Query('cat=175&orderby=date&posts_per_page=10');
    $pc2 = new WP_Query ('cat=176&orderby=date&posts_per_page=10');

    к

    <?php the_time('j F Y'); ?>

    Или нет?

    Автор aleks

    (@aleks683)

    Вот теперь упростил код до минимума

    <table>
    <?php
    $pc = new WP_Query(array( 'cat' => '175', 'orderby' => 'date', 'posts_per_page' => 5 ));
    $pc2 = new WP_Query(array( 'cat' => '176', 'orderby' => 'date', 'posts_per_page' => 5 ));
     ?>
    <?php if ( $pc->have_posts() )  : while ( $pc->have_posts() ) : $pc->the_post(); ?>
    
    	<tr>
    		<td colspan="2"><?php the_time('j F Y'); ?></td>
    	</tr>
    
    	<?php $categories = get_the_category( get_the_id() );?>
    
    	<tr>	
    		
    		<?php foreach ($categories as $category):  ?>		
    <td>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'medium' ); ?>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </td>	
    		<?php endforeach; ?>
    		
    		
    		
    		<?php foreach ($categories as $category): $pc2->the_post(); ?>
    <td>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_post_thumbnail( 'medium' ); ?></a>
        <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a>
    </td>
    		<?php endforeach; ?>
    	
    	</tr>
    
    <?php endwhile; ?>
    <!-- post navigation -->
    <?php else: ?>
    <!-- no posts found -->
    <?php endif; ?>
    
    </table>

    Никак не пойму как сделать условие чтобы $pc и $pc2 были активны если дата the_time(‘j F Y’) соответствующая ??? Наверняка ответ на поверхности лежит 🙁

    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.
    • Ответ изменён 7 лет, 1 месяц назад пользователем aleks.
Просмотр 12 ответов — с 16 по 27 (всего 27)
  • Тема «Как объединить два цикла в колонки» закрыта для новых ответов.