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

Вывод статей случайным образом

Здравствуйте.

Я использую готовую тему оформления для сайта, на котором будут публиковаться детские рисунки. Соответственно, хотелось бы, чтобы при входе посетителем на сайт - ему показывались бы не набор последних записей (+ динамическая подгрузка, как сейчас) а набор случайных записей.

Соответственно, при входе в какую то категории - хотелось бы видеть случайные записи из определенных категорий.

вот код:

<?php get_header(); ?>
<div class="main-content-w">

  <?php os_the_primary_sidebar(true); ?>

  <div class="main-content-i">
	<?php require_once(get_template_directory() . '/inc/set-layout-vars.php') ?>
	<?php require_once(get_template_directory() . '/inc/partials/featured-slider.php') ?>
	<div class="content side-padded-content adwardtag007">
	  <?php require_once(get_template_directory() . '/inc/partials/top-ad-sidebar.php') ?>
		<div class="index-isotope <?php echo $isotope_class; ?>" 
			data-layout-mode="<?php echo $layout_mode; ?>">
		<?php 
			$os_current_box_counter = 1; 
			$os_ad_block_counter = 0; 

			if ( have_posts() ) : while ( have_posts() ) : the_post(); 
				get_template_part( $template_part, get_post_format() ); 
//              os_ad_between_posts(); 
			endwhile; endif; 
		?>
	  </div>
	  <?php require_once(get_template_directory() . '/inc/isotope-navigation.php') ?>
	</div>

	<?php os_footer(); ?>
  </div>
</div>
<?php get_footer(); ?>

Вы не могли бы мне подсказать, что вписать в цикл для того, чтобы вывод сделать случайных статей? Я видел Ваши мануалы, но там разбираются другие циклы.

0
adward
7.9 лет назад 8
  • 0
    Kama9616

    Можно использовать хук pre_get_posts.

    Проверяем, если это запрос страницы рубрики, то выставляем там параметр orderby=rand (см WP_Query). Но надо иметь ввиду, что такая случайная сортировка сильно нагружает БД. Если записей будет много, сервер ваш будет страдать...

    add_action( 'pre_get_posts', 'my_posts_filter' );
    function my_posts_filter( $query ){
    	if( is_admin() ) return; // выходим если админка
    
    	// если страница рубрики и основной цикл
    	if( $query->is_category && $query->is_main_query() ) {
    		$query->set('orderby', 'rand');
    	}
    }
    
    Kama 7.9 лет назад

    Проверки
    if( is_admin() ) return; // выходим если админка
    и
    if( $query->is_main_query() )

    обязательны, а то конфликтов нахватаете...

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