WordPress PageNavi插件不适用于category.php

我有一个问题,PageNavi显示126页(126个帖子 – 这部分几乎是正确的),但不是分解10(期望13页)它显示每个页面中的所有帖子.如果我更改’numberposts’=> 5它显示了相同的5.

相关代码部分:

<?PHP wp_pagenavi(); ?>
<?PHP
$args = array( 'category' => 7, 'numberposts' => -1);
$allpost = get_posts( $args );
    foreach($allpost as $post) : setup_postdata($post); ?>
    <p class="datelist"><a href="<?PHP the_permalink(); ?>"><?PHP the_title(); ?></a></p>
<?PHP endforeach; ?>
<?PHP wp_pagenavi(); ?>

我似乎无法弄清楚出了什么问题.

更新(完整代码):

<?PHP
get_header();
?>
<div id="container">
    <div id="content" role="main">
        <h1>something</h1>
        <?PHP
        $args = array( 'category' => 7, 'numberposts' => -1);
        $allpost = get_posts( $args );
        foreach($allpost as $post) : setup_postdata($post); ?>
        <p class="datelist"><a href="<?PHP the_permalink(); ?>"><?PHP the_title(); ?></a></p>
        <?PHP endforeach; ?>
</div>
</div>
<?PHP get_footer(); ?>

工作代码

<?PHP get_header(); ?>
    <div id="container">
            <div id="content" role="main">
            <h1>something</h1>
<?PHP
global $paged;
if (get_query_var( 'paged' ))
    $my_page = get_query_var( 'paged' );
else {
    if( get_query_var( 'page' ) )
        $my_page = get_query_var( 'page' );
    else
        $my_page = 1;
    set_query_var( 'paged', $my_page );
    $paged = $my_page;
}

$args = array(
    'cat=7',
    'paged' => $my_page,
    'posts_per_page' => 10
);
$my_query = new WP_Query( $args );
while ($my_query->have_posts()) : $my_query->the_post();?>
    <p class="datelist"><a href="<?PHP the_permalink(); ?>"><?PHP the_title(); ?></a></p>
<?PHP endwhile;
wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();
?>
        </div>
    </div>
<?PHP get_footer(); ?>

解决方法:

当您使用get_posts时,您正在进行自己的查询,而不是使用wordpress生成查询变量. PageNavi插件无法在自定义循环中开箱即用.

作为pointed by rbaier4,您必须使用分页变量.注意不要将认循环与自定义内容混合,并在完成后重置变量.

global $paged;
if (get_query_var( 'paged' ))
    $my_page = get_query_var( 'paged' );
else {
    if( get_query_var( 'page' ) )
        $my_page = get_query_var( 'page' );
    else
        $my_page = 1;
    set_query_var( 'paged', $my_page );
    $paged = $my_page;
}

// default loop here, if applicable, followed by wp_reset_query();

$args = array(
    // other query params here,
    'paged' => $my_page
);

$my_query = new WP_Query( $args );

// custom loop code

wp_pagenavi( array( 'query' => $my_query ) );
wp_reset_query();

希望能帮助到你.

相关文章

我们有时候在定制WORDPRESS主题的时候,由于菜单样式的要求我...
很多朋友在做wordpree主题制作的时候会经常遇到一个问题,那...
wordpress后台的模块很多,但并不是每个都经常用到。介绍几段...
从WordPress4.2版本开始,如果我们在MYSQL5.1版本数据中导出...
很多网友会遇到这样一个问题,就是WordPress网站上传图片、附...
对于经常要在文章中出现代码的IT相关博客,安装一个代码高亮...