wordpress循环分页,分页内容一样怎么解决

每一页显示的内容和第一页都一样,下面是我的代码:

 <div class="row">
            <?php 
            query_posts('cat=3&posts_per_page=3'); while(have_posts()): the_post();
            ?>
            <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 wow animated fadeInUp homeanli">
            <figure>
                <a href="<?php the_permalink(); ?>" title="<?php the_title();?>"><img src="<?php the_post_thumbnail_url('full'); ?>" alt="<?php the_title();?>" />
                    <figcaption>
                        <h3><?php the_title();?><span><?php the_time('y-m-d');;?></span></h3>
                    </figcaption>
                </a>
            </figure>
            </div>
            <?php endwhile;?>
            
        </div>

        <div class="list-page">
            
        <?php 
        lingfeng_pagenavi();
        ?>

然后是functions

function lingfeng_pagenavi( $range = 4 ) {
    global $paged,$wp_query,$max_page;
    if ( !$max_page ) {
        $max_page = $wp_query->max_num_pages;
    }
    if( $max_page >1 ) {
        echo "<div class='fenye'>";
        if( !$paged ){
            $paged = 1;
        }
        if( $paged != 1 ) {
            echo "<a href='".get_pagenum_link(1) ."' class='extend' title='跳转到首页'>首页</a>";
        }
        previous_posts_link('上一页');
        if ( $max_page >$range ) {
            if( $paged <$range ) {
                for( $i = 1; $i <= ($range +1); $i++ ) {
                    echo "<a href='".get_pagenum_link($i) ."'";
                if($i==$paged) echo " class='current'";echo ">$i</a>";
                }
            }elseif($paged >= ($max_page -ceil(($range/2)))){
                for($i = $max_page -$range;$i <= $max_page;$i++){
                    echo "<a href='".get_pagenum_link($i) ."'";
                    if($i==$paged)echo " class='current'";echo ">$i</a>";
                    }
                }elseif($paged >= $range &&$paged <($max_page -ceil(($range/2)))){
                    for($i = ($paged -ceil($range/2));$i <= ($paged +ceil(($range/2)));$i++){
                        echo "<a href='".get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo ">$i</a>";
                    }
                }
            }else{
                for($i = 1;$i <= $max_page;$i++){
                    echo "<a href='".get_pagenum_link($i) ."'";
                    if($i==$paged)echo " class='current'";echo ">$i</a>";
                }
            }
        next_posts_link('下一页');
        if($paged != $max_page){
            echo "<a href='".get_pagenum_link($max_page) ."' class='extend' title='跳转到最后一页'>尾页</a>";
        }
        echo "</div>\n";
    }
}

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
【第一种方式】
在您的代码中,每一页显示的内容都是相同的。这是因为您在循环中使用了query_posts函数来获取帖子,并且没有根据分页参数进行调整。

要解决这个问题,您可以使用paged参数来指定要获取的页面。这样,每一页将根据分页参数来显示不同的内容。

以下是修改后的代码示例:

<div class="row">
    <?php 
    $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;
    $args = array(
        'cat' => 3,
        'posts_per_page' => 3,
        'paged' => $paged
    );
    query_posts( $args );
    while ( have_posts() ) : the_post();
    ?>
    <div class="col-xs-6 col-sm-4 col-md-4 col-lg-4 wow animated fadeInUp homeanli">
        <figure>
            <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
                <img src="<?php the_post_thumbnail_url( 'full' ); ?>" alt="<?php the_title(); ?>" />
                <figcaption>
                    <h3><?php the_title(); ?><span><?php the_time( 'y-m-d' ); ?></span></h3>
                </figcaption>
            </a>
        </figure>
    </div>
    <?php endwhile; ?>
</div>

<div class="list-page">
    <?php 
    lingfeng_pagenavi();
    wp_reset_query();
    ?>
</div>

在上面的代码中,我们首先获取当前的分页参数$paged,并将其传递给query_posts函数的参数数组中。这样,在每一页的循环中,将根据分页参数获取相应的帖子内容。

另外,请确保在分页后使用wp_reset_query()来重置查询,以确保后续的查询正常工作。

通过这些修改,每一页将显示不同的内容,而不是与第一页相同的内容。


【第二种方式】
你的代码中,分页链接的生成逻辑有问题。在判断当前页码的位置时,你没有考虑到$paged$range的关系,导致分页链接没有正确地生成。

你可以尝试修改lingfeng_pagenavi函数中的这部分代码:

if( $max_page >$range ) {
    if( $paged <$range ) {
        for( $i = 1; $i <= ($range +1); $i++ ) {
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged) echo " class='current'";echo ">$i</a>";
        }
    }elseif($paged >= ($max_page -ceil(($range/2)))){
        for($i = $max_page -$range;$i <= $max_page;$i++){
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged)echo " class='current'";echo ">$i</a>";
        }
    }elseif($paged >= $range &&$paged <($max_page -ceil(($range/2)))){
        for($i = ($paged -ceil($range/2));$i <= ($paged +ceil(($range/2)));$i++){
            echo "<a href='".get_pagenum_link($i) ."'";if($i==$paged) echo " class='current'";echo ">$i</a>";
        }
    }
}else{
    for($i = 1;$i <= $max_page;$i++){
        echo "<a href='".get_pagenum_link($i) ."'";
        if($i==$paged)echo " class='current'";echo ">$i</a>";
    }
}

修改为:

if( $max_page >$range ) {
    if( $paged <= ($max_page -$range+1) ) {
        for( $i = 1; $i <= ($range +1); $i++ ) {
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged) echo " class='current'";echo ">$i</a>";
        }
    }elseif($paged >= ($max_page -ceil(($range/2))) && $paged <= ($max_page -1)){
        for($i = $max_page -$range;$i <= $max_page;$i++){
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged)echo " class='current'";echo ">$i</a>";
        }
    }elseif($paged >= ($max_page -ceil(($range/2))) && $paged > ($max_page -$range)){
        for($i = $max_page -$range+1;$i <= $max_page;$i++){
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged)echo " class='current'";echo ">$i</a>";
        }
    }else{
        for($i = $paged -1;$i < $paged +$range;$i++){
            echo "<a href='".get_pagenum_link($i) ."'";
            if($i==$paged)echo " class='current'";echo ">$i</a>";
        }
    }
}else{
    for($i = 1;$i <= $max_page;$i++){
        echo "<a href='".get_pagenum_link($i) ."'";
        if($i==$paged)echo " class='current'";echo ">$i</a>";
    }
}

这样修改后,分页链接应该可以正确地显示在不同的页面上了。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

【相关推荐】



  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7517481
  • 这篇博客也不错, 你可以看下页面加载时触发function函数的方法
  • 除此之外, 这篇博客: function 自定义函数、函数调用中的 函数的调用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

    1、函数要先定义,才能调用,函数调用格式:直接写函数名即可调用,不需要加括号,如:name;
    2、调用 Shell 函数时可以给它传递参数,也可以不传递。如果不传递参数,直接给出函数名字即可:name;
    3、如果传递参数,那么多个参数之间以空格分隔:name param1 param2 param3;
    4、不管是哪种形式,函数名字后面都不需要带括号;
    5、和其它编程语言不同的是,Shell 函数在定义时不能指明参数,但是在调用时却可以传递参数,并且给它传递什么参数它就接收什么参数;
    6、Shell 也不限制定义和调用的顺序,你可以将定义放在调用的前面,也可以反过来,将定义放在调用的后面。

    演示示例:
    [root@Centos8 shell_scripy]# cat function.sh
    #!/bin/bash
    function sum ()
    {
    echo expr $1 + $2
    }
    sum 34 60

    [root@Centos8 shell_scripy]# ./function.sh
    94


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

感谢各位,已经解决