Я искал StackOverflow и выключал весь день в поисках решения моей проблемы. По какой-то причине я не могу заставить нумерацию страниц правильно работать с этим циклом. Сначала я использовал «query_posts», который вроде работал .. хотя на каждой странице были одинаковые посты. Вот мой код …
<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'cat' => '319',
'posts_per_page' => 8,
'paged' => $paged
);
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
/* The Loop */
while ( $loop->have_posts() ) {
$loop->the_post();
// do something
echo '<li>';
echo '<a class="syncopate" href="';
the_permalink();
echo '">';
the_title();
echo '</a>';
echo '</li>';
}
} ?>
<div class="nav-previous alignleft"><?php next_posts_link( 'Older posts' ); ?></div>
<div class="nav-next alignright"><?php previous_posts_link( 'Newer posts' ); ?></div>
<?php wp_reset_query(); ?>
Кажется, что это должно работать, но почему нет?
Это то, что функция вызывается в pagination.php …
function html5wp_pagination()
{
global $wp_query;
$big = 999999999;
echo paginate_links(array(
'base' => str_replace($big, '%#%', get_pagenum_link($big)),
'format' => '?paged=%#%',
'current' => max(1, get_query_var('paged')),
'total' => $wp_query->max_num_pages
));
}
Таким образом, это в конечном итоге работает для меня. Может кто-нибудь объяснить мне, почему это сработало, а мой оригинальный код — нет?
$page = (get_query_var('paged')) ? get_query_var('paged') : 1;
$temp = $wp_query;
$wp_query = null;
$wp_query = new WP_Query();
$wp_query -> query('cat=319&posts_per_page=10'.'&paged='.$paged);
while ($wp_query->have_posts()) : $wp_query->the_post(); ?>
<div class="post">
<?php echo '<li>';
echo '<a class="syncopate" href="';
the_permalink();
echo '">';
the_title();
echo '</a>';
echo '</li>'; ?>
</div>
<?php endwhile; // end of the loop. ?>
<div class="pagenav">
<div class="alignleft"><?php previous_posts_link('Previous') ?></div>
<div class="alignright"><?php next_posts_link('Next') ?></div>
</div>
<?php $wp_query = null; $wp_query = $temp; ?>
Других решений пока нет …