Я пытаюсь реализовать разбиение на страницы на странице категории. Разбивка на страницы работает, но теперь по какой-то причине плагин разбивки на страницы, который я использую, отмечает одну дополнительную страницу результатов, когда эта страница на самом деле пуста.
Я почти уверен, что это не имеет ничего общего с плагином разбиения на страницы, потому что я видел сообщения о людях, имеющих ту же проблему с next_posts_link и previous_posts_link.
Кто-нибудь знает, как это могло произойти?
Петля:
<?php
global $myOffset;
$myOffset = 11;
$temp = $wp_query;
$wp_query= null;
$wp_query = new WP_Query();
$wp_query->query('offset='.$myOffset.'&cat=6&posts_per_page=12'.'&paged='.$paged);
?>
<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
STUFF
<?php endwhile; ?>
<?php if(function_exists('wp_paginate')) {
// get yo paginate on
wp_paginate();
} ?>
Изменить: я также использую этот плагин functions.php, чтобы включить параметр смещения в пользовательском wp_query:
function my_post_limit($limit) {
global $paged, $myOffset;
if (empty($paged)) {
$paged = 1;
}
$postperpage = intval(get_option('posts_per_page'));
$pgstrt = ((intval($paged) -1) * $postperpage) + $myOffset . ', ';
$limit = 'LIMIT '.$pgstrt.$postperpage;
return $limit;
} //end function my_post_limit
Можете ли вы попробовать другой плагин разбиения на страницы, если этот плагин не подчиняется смещению? Вы пробовали wordpress.org/extend/plugins/wp-pagenavi ? Я клянусь им, но мне никогда не приходилось использовать его со смещением, поэтому я не могу сказать, что это решит вашу проблему, но попробовать стоит…
Вы правы, это так! Когда смещение равно 0, каждая страница с разбивкой на страницы имеет содержимое (без пустых страниц). Теперь, конечно, сложный вопрос, есть ли способ обойти это? Я использую эту функцию в сочетании с фильтром, чтобы включить смещение в пользовательском wp_query и по-прежнему иметь разбиение на страницы:
function my_post_limit($limit) { global $paged, $myOffset; if (empty($paged)) { $paged = 1; } $postperpage = intval(get_option('posts_per_page')); $pgstrt = ((intval($paged) -1) * $postperpage) + $myOffset. ', '; $limit = 'LIMIT '.$pgstrt.$postperpage; return $limit; } //end function my_post_limit
@Squrler, извините, я недостаточно работал с нумерацией страниц, чтобы иметь хорошее представление о том, как это обойти. Я обновлю, если что-то придумаю. Кстати, добавьте этот фрагмент кода в исходный вопрос, чтобы его было легче читать.
+1 — к перемещению кода в вопрос.. (блоки кода ужасно читать в комментариях).
Сделаю это. Кроме того (и, пожалуйста, извините, если я не должен спросить об этом здесь), можно ли добавлять блоки кода в комментарий?
@Squrler не уверен, что ты имеешь в виду. Вы можете добавить код в комментарии (как вы это сделали), но вы не можете делать отступы и т. д., комментарии на самом деле не предназначены для этого.
Эй, спасибо за ответ. Я не уверен, что понимаю, что вы имеете в виду под «более родной функцией». Разве next_posts_link тоже не родная функция? Кроме того, я использую функцию wp_paginate, а не функцию next_posts_link.
@Squrler — внутри WordPress есть некоторые функции, которые предлагают уровень выше других функций. Так
next_posts_link()
что это просто упрощенная версияget_adjacent_posts()
. Есть много других подобных. Другой примерhas_post_format()
— слой вышеis_object_in_term()
. Просто взгляните на код плагина и прочитайте встроенные комментарии, и вы поймете лучше.Я не уверен, но у меня есть предположение, что это потому, что вы используете пагинацию и
offset
в то же время. Пагинация может быть рассчитана для всего набора, но вы уменьшаете размер набора со смещением, поэтому количество страниц становится завышенным.Вы можете попробовать использовать более нативную
get_adjacent_posts()
функцию, чтобы увидеть, является ли проблемаnext_posts_link()
функцией. Для получения дополнительной информации я написал образовательный плагин, который хорошо документирован и прокомментирован, чтобы помочь вам в этом процессе.