WordPress как на ладони
Недорогой хостинг для сайтов на WordPress: wordpress.jino.ru

Как разбить стандартный цикл WordPress?

Вот скрин это то, что нужно сделать.

Т.е. мне нужно разделить цикл записи .

Например первые 2 записи имеют один дизайн, 3 запись другой дизайн, 4,5,6 другой дизайн и т.д.

Прошу подсказать, куда копать. Спасибо за любую помощь!

0
edveraxo
5 месяцев назад
  • 0
    el-lable260 el-lable.ru

    1) стилями на основе http://htmlbook.ru/CSS/nth-child

    2) Javascript на основе нужного вам алгоритма он будет добавлять классы этим блокам, ну а блоки будут иметь стилизацию под эти классы

    3) в самом шаблоне в цикле wordpress добавить алгоритм.
    и еще множеством способов, все зависит от вашей фантазии good2

    edveraxo 5 мес назад

    Улыбнулся! )) Ну конечно нужно сам цикл делить, поэтому и спрашиваю как его можно поделить на разные части?

    Комментировать
  • 0
    Kama7631
    $posts = get_posts( параметры запроса );
    
    // или 
    $query = new WP_Query( параметры запроса );
    $posts = $query->posts;
    
    // В $posts теперь массив с постами, бери из него все что нужно по-очереди
    
    $top_posts = array_slice( $posts, 0, 2 ); // 2 штуки
    $mid_posts = array_slice( $posts, 2, 1 ); // 1 штука
    $bot_posts = array_slice( $posts, 3 );    // все остальные
    
    global $post;
    
    // top
    foreach( $top_posts as $post ){
    	setup_postdata( $post );
    
    	// вывод
    }
    
    // middle
    foreach( $mid_posts as $post ){
    	setup_postdata( $post );
    
    	// вывод
    }
    
    // bottom
    foreach( $bot_posts as $post ){
    	setup_postdata( $post );
    
    	// вывод
    }
    
    wp_reset_postdata();
    edveraxo 4 мес назад

    Спасибо за Ваш ответ! Давно читаю Ваш сайт, знаю, что Вы гуру Вордпресс. Попробовал применить Ваш код не получилось, может я неверно объяснил, что требуется.

    Раньше я выводил записи кодом в category.php
    ---while ( have_posts() ) : the_post();---
    шаблон вывода записи
    ---endwhile;---

    Теперь нужно грубо говоря тоже самое вывести, но как бы делить записи, что нужно разделить записи have_posts() ) : the_post();

    Чтобы сохранялась так же постраничная навигация по этой категории и т.д. Такое возможно реализовать? Чтобы было ясно. вот ссылка на сайт https://collectionsalon.ru/blog/ сюда я пока вставил чистую вёрстку, вот её и нужно оживить.

    Комментировать
  • 0
    Glum600

    если особо не страдать и лень что-то выдумывать то можно так

        while( have_posts() ) : the_post();
    
    		if ( $wp_query->current_post == 0 ) echo '<div class="c-1">';
    		elseif ( $wp_query->current_post == 2 ) echo '<div class="c-2">';
    		elseif ( $wp_query->current_post == 3 ) echo '<div class="c-3">';
    
    		the_title();
    
    		if ( $wp_query->current_post == 1 ) echo '</div>';
    		elseif ( $wp_query->current_post == 2 ) echo '</div>';
    		elseif ( $wp_query->current_post == ( $wp_query->query_vars['posts_per_page'] - 1 ) ) echo '</div>';
    
    	endwhile;  
    

    а так как и говорили выше на сколько хватит фантазии все в ваших руках

    edveraxo 4 мес назад

    Простите, вот глупый я, не понимаю как реализовать, уже что только не пробовал. Я вот для облегчения сделал вырезку html кода этого блока. Может кто подскажет как это реализовать? Готов финансово отблагодарить.

        <section class="padding_section_small" style="background-color: #191919;">
    		<div class="wrapper">
    			<div class="row">
    				запись 1
    				запись 2
    			</div>
    		</div>
    	</section>
    
    	<section class="padding_section_small" style="background-color: #141414;">
    		<div class="wrapper">
    			<div class="row">
    				запись 3
    			</div>
    
    			<div class="row grid_posts_x2">
    				запись 4
    				запись 5
    				запись 6
    				запись 7
    				запись 8
    				запись 9
    			</div>
    
    		</div>
    	</section>
    
    	<section class="padding_section_small" style="background-color: #191919;">
    		<div class="wrapper">
    			<div class="row">
    				запись 10
    				запись 11
    			</div>
    		</div>
    	</section>
    edveraxo 4 мес назад

    Вот решение! Если кому-нибудь будет интересно smile

    <?php
    
    global $wp_query;
    
    ?>
    
    <div class="wrapper">
    	<?php while( have_posts() ) : the_post(); ?>
    		<?php switch( $wp_query->current_post ) : case -9999: break; ?>
    
    			<?php case 0:?>
    			<section class="padding_section_small"> 
    				<div class="wrapper"> 
    					<div class="row"> 
    						<div class="col-xs-6">
    							<?php the_title() //запись 1?> 
    						</div>
    			<?php break; ?>   
    			<?php case 1: ?>      
    						<div class="col-xs-6">
    							<?php the_title() //запись 2?>
    						</div>
    					</div> 
    				</div> 
    			</section>
    			<?php break; ?>
    			<?php case 2: ?>
    			<section class="padding_section_small"> 
    				<div class="wrapper"> 
    					<div class="row"> 
    						<div class="col-xs-12">
    							<?php the_title() //запись 3?>
    						</div>
    					</div>
    				</div>
    			<?php break; ?>
    
    			<?php case 3: ?>
    					<div class="row grid_posts_x2">
    						<div class="col-xs-4">
    							<?php the_title() //запись 4?>
    						</div>    
    			<?php break; ?>
    			<?php case 4: case 5: case 6: case 7: ?>
    						<div class="col-xs-4">
    							<?php the_title() //запись 5,6,7,8?>
    						</div>    
    			<?php break; ?>
    			<?php case 8: ?>
    						<div class="col-xs-4">
    							<?php the_title() //запись 9?>
    						</div>    
    					</div> 
    			</section> 
    			<?php break; ?>
    			<?php case 9: ?>
    			<section class="padding_section_small"> 
    				<div class="wrapper"> 
    					<div class="row"> 
    						<div class="col-xs-6">
    							<?php the_title() //запись 10?>
    						</div>
    			<?php break; ?>       
    			<?php case 10: ?>
    						<div class="col-xs-6">
    							<?php the_title() //запись 11?>
    						</div>
    					</div> 
    				</div> 
    			</section>
    			<?php break; ?>
    
    		<?php endswitch; ?>
    
    	<?php endwhile; ?>
    </div>
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация