На index.php
странице мне нужно пропустить 5 постов (последние 5 постов в блоге).
Я использую плагин WP-Paginate, но все страницы отображаются одинаково. Я использую offset=5
, это мой код:
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;?>
<?php $additional_loop = new WP_Query("offset=5&paged=".$paged);
if ($additional_loop->have_posts()) :
while ($additional_loop->have_posts()) : $additional_loop->the_post();
the_title();?><br/>
<?php the_content();?>
<?php endwhile;endif;?>
<?php if(function_exists('wp_paginate')) {
wp_paginate('range=4&anchor=2&nextpage=Next&previouspage=Previous');
} ?>
Попробуйте этот: github.com/franz-josef-kaiser/Easy-Pagination-Damon Его можно использовать как плагин, но он предназначен для того, чтобы показать вам, как можно выполнить разбиение на страницы в wp.
Вы не можете использовать смещение с параметром paged, система пейджинга устанавливает смещение, когда вы устанавливаете смещение, вы искажаете пейджинг. Если вы используете смещение, вы должны создать свою собственную систему подкачки (т.е. создать ссылки для подкачки самостоятельно).
Вы можете указать либо
paged
для простой нумерации страниц, либоoffset
если вы хотите сделать что-то особенное. Вычислить смещение самостоятельно несложно: просто умножьте текущий номер страницы (минус два) на количество сообщений на странице и добавьте начальное смещение:Я вижу, вы используете
wp_paginate()
, но эта функция не знает, что вы используете дополнительный запрос, и будет считывать глобальный$wp_query
объект, чтобы получить текущую страницу и общее количество страниц, если только вы сами не передадите эти значения:Это дополнительный цикл, значит, на этой странице все еще есть «обычный» цикл? Следите за тем, чтобы это не запутало нумерацию страниц, потому что WordPress также попытается разбить этот цикл на страницы и вернуть 404, если он исчерпан — что может быть до того, как вы дойдете до последней страницы. Пробуйте делать пагинацию только в основном цикле, с
pre_get_posts
хуком.