@Forsaider

Как исключить пост из вывода Wordpress?

<?php if (have_posts()) : query_posts('orderby=date&showposts=8'); while (have_posts()) : the_post();  ?>
                        	<?php if ( !is_sticky ()) : ?>
								<?php
                                    $thumb_id = get_post_thumbnail_id();
                                    $thumb_url = wp_get_attachment_image_src($thumb_id,'thumbnail-size', true);
                                ?>
                                <a href="<?php the_permalink(); ?>" rel="bookmark" class="main_items">
                                    <div class="main_items_photo" style="background:url('<?php echo $thumb_url[0];?>');"></div>
                                    <div class="main_items_title"><?php the_title(); ?></div>
                                    <div class="main_items_info">
                                        <div class="main_items_info_line"><i class="fa fa-clock-o"></i> <?php the_date(); ?></div>             
                                        <div class="main_items_info_line"><i class="fa fa-comment"></i> <?php comments_number('0', '1', '%'); ?></div>
                                        <div class="main_items_info_line"><i class="fa fa-eye"></i> <?php if(function_exists('the_views')) { the_views(); } ?></div>
                                    </div>
                                </a>
                            <?php endif; ?>
                            <?php endwhile; else: ?>
                            Нет новостей                            
                        <?php endif; ?>


Вот таким вот методом вывожу посты на главной странице. Есть 2 таких блока. В первом выводится 8 постов. Во втором, по задумке должно так же выводится 8 постов, но с подгрузкой через AJAX при нажатии на кнопку "Загрузить еще" грузить дальше. Возникла проблема, эти первые 8 постов повторяются в 2 блоках. Как во втором блоке исключить последние 8 постов, что выводятся и начинать с 9? Вариант с id не подходит.
  • Вопрос задан
  • 971 просмотр
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
Для сдвига есть параметр offset. Правда, он имеет побочный эффект на пагинацию. Но, у вас с ней и так грабли, ибо query_posts('orderby=date&showposts=8'). В общем,

1. Читаем документацию по WP_Query. В вашем случае нужен хук pre_get_posts.
2. Никогда, НИКОГДА не используем query_posts(). Я не знаю как еще и сколько еще нужно об этом говорить.

По поводу правильной работы с оффсетами есть хорошая статья у Tom McFarlin.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Forsaider Автор вопроса
<?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 id="true_loadmore" class="load_button"><span class="load_ico"></span><span class="load_txt">Загрузить ещё</span></div>
                        <?php endif; ?>
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы