更新
在Wordpress外部测试我的脚本,它的工作原理。所以这个分页的问题在于Wordpress。我做了一些研究,并将这个重写代码添加到我的函数文件中,但它仍然不起作用
function my_rewrite_globe_pagination()
{
add_rewrite_rule('^newspaper/page/([0-9]{1,})/?', 'index.php?paged=$matches[1]', 'top');
}
add_action('init', 'my_rewrite_globe_pagination');
下一个按钮网址如下所示:domain/page-name/?page=2
点击下一步后浏览器中的网址:domain/page-name/page/2/
更新前
首先,我想说我在stackoverflow上阅读了所有类似的问题,但我找不到适合我案例的解决方案。
我想要实现的是在我的wordpress页面上的全球数字分页。在我的页面模板中,我有下面列出的代码,我有这个代码有两个问题:
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = 1;
}
$base_dir = trailingslashit(wp_upload_dir()['basedir']);
$base_url = wp_upload_dir()['baseurl'];
$dir_jpg = '/newspaper/jpg/';
$dir_pdf = '/newspaper/pdf/';
$images = glob($base_dir.$dir_jpg.'*.*');
$limit = 2;
$total =count($images);
$total_pages = ceil($total/$limit);
$offset = ($page-1) * $limit;
$images = array_slice($images, $limit);
foreach($images as $image) {
$url = $base_url.$dir_jpg.basename($image);
$filename = substr(basename($image), 0, -4);
$pdfs = $base_url.$dir_pdf.$filename.".pdf";
printf('<a href="'.$pdfs.'" target="_blank" class="newspaper-link col-xl-3"><img src="%s" alt="'.$filename.'.pdf"><div class="newspaper-hover"></div></a>', esc_url($url));
}
?>
<ul class="pagination">
<li class="<?php if($page <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($page <= 1){ echo '#'; } else { echo "?page=".($page - 1); } ?>">Prev</a>
</li>
<li class="<?php if($page >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($page >= $total_pages){ echo '#'; } else { echo "?page=".($page + 1); } ?>">Next</a>
</li>
</ul>
答案 0 :(得分:0)
对于第一个问题,您只需打印$page - 1
和$page + 1
代替“上一个”和“下一个”(并检查当前页面是第一个还是最后一个):
<ul class="pagination">
<li class="<?php if($page <= 1){ echo 'disabled'; } ?>">
<a href="<?php if($page <= 1){ echo '#'; } else { echo "?page=".($page - 1); } ?>"><?php echo ($page <= 1) ? "X" : ($page - 1)?></a>
</li>
<li class="<?php if($page >= $total_pages){ echo 'disabled'; } ?>">
<a href="<?php if($page >= $total_pages){ echo '#'; } else { echo "?page=".($page + 1); } ?>"><?php echo ($page >= $total_pages) ? "X" : ($page + 1)?></a>
</li>
</ul>
第二个问题是由于您对array_slice的错误调用引起的。
根据{{3}},第二个参数必须是数组的起始偏移量(在您的情况下为$offset
),第三个参数必须是所需数组的长度($limit
),所以这应该解决它:
$images = array_slice($images, $offset, $limit);