每一页显示的内容和第一页都一样,下面是我的代码:
<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>";
}
}
这样修改后,分页链接应该可以正确地显示在不同的页面上了。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
【相关推荐】
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
感谢各位,已经解决