@micrgosu

Как избежать дубля статей при рандомном выводе?

Ребята, подскажите, как избежать дублей статей при рандомном выводе? Я установил скрипт кнопки "Загрузить еще", чтобы статьи выводились без пагинации, но при выборе рандома, статьи дублируются при выводе, как можно этого избежать?

Это добавлено в function.php
function true_load_posts(){
	$args = unserialize(stripslashes($_POST['query']));
	$args['paged'] = $_POST['page'] + 1; // следующая страница
	$args['post_status'] = 'publish';
	$q = new WP_Query($args);
	if( $q->have_posts() ):
		while($q->have_posts()): $q->the_post();
			/*
			 * Со строчки 13 по 27 идет HTML шаблон поста, максимально приближенный к теме TwentyTen.
			 * Для своей темы вы конечно же можете использовать другой код HTML.
			 */
			?>

<article>
Параметры вывода статьи			
</article>

			<?php
		endwhile;
	endif;
	wp_reset_postdata();
	die();
}


Это в index.php
<?php query_posts('orderby=rand&showposts=1'); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>

<article>
Параметры вывода статьи
</article>	

<?php endwhile; ?>
	
<?php if (  $wp_query->max_num_pages > 1 ) : ?>
<script>
var ajaxurl = '<?php echo site_url() ?>/wp-admin/admin-ajax.php';
var true_posts = '<?php echo serialize($wp_query->query_vars); ?>';
var current_page = <?php echo (get_query_var('paged')) ? get_query_var('paged') : 1; ?>;
var max_pages = '<?php echo $wp_query->max_num_pages; ?>';
</script>
	<div class="loadmorebtn"><div id="loadmore">Загрузить ещё</div></div>
<?php endif; ?>
	
<?php else : ?>
<div class="else">Извините, но посты еще не добавлены</div>
<?php endif; ?>
  • Вопрос задан
  • 43 просмотра
Пригласить эксперта
Ответы на вопрос 1
@micrgosu Автор вопроса
Удалось найти плагин и на его официальном сайте код рандомного вывода, так как через настройки внутри плагина рандомный вывод включить нельзя

Плагин Ajax Load More

<?php
$post_ids = array();
// Query ALL posts ordered by random
$args = array(
   'post_type'           => array('post'), // Posts
   'orderby'             => 'rand', // Order random
   'posts_per_page'      => -1, // get all posts
   'ignore_sticky_posts' => true, // Do not preserve order of stickies
);
$the_query = new WP_Query( $args );
 
while ( $the_query->have_posts() ) : $the_query->the_post();
   $post_ids[] = $post->ID; // Build array of post IDs
endwhile; wp_reset_query();
   
// Pass $post_ids array to Ajax Load More post__in parameter
echo do_shortcode('[ajax_load_more scroll="false" posts_per_page="1" post__in="'. implode(',', $post_ids) .'" orderby="post__in"]'); 
?>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы