php - Timber 使用了不正确的分页链接
问题描述
我正在尝试使用 Timber 的分页功能,但呈现的链接只是将我发送到 404 页面。这是我获取帖子列表的方式:
$posts = new Timber\PostQuery([
'post_type' => 'event',
'paged' => $paged,
'posts_per_page' => 6,
]);
$context['posts'] = $posts;
以及我如何渲染它们:
{% if posts.pagination.pages is not empty %}
<nav class="navigation" role="navigation">
<ol class="pagination">
{% if posts.pagination.prev %}
{% include "wp/pagination/_pagination-link.twig" with {"class": posts.pagination.prev.class, "link": posts.pagination.prev.link, "title": "←"} %}
{% endif %}
{% for page in posts.pagination.pages %}
{% include "wp/pagination/_pagination-link.twig" with {"class": page.class, "link": page.link, "title": page.title} %}
{% endfor %}
{% if posts.pagination.next %}
{% include "wp/pagination/_pagination-link.twig" with {"class": posts.pagination.prev.class, "link": posts.pagination.next.link, "title": "→"} %}
{% endif %}
</ol><!-- /.pagination -->
</nav><!-- /.navigation -->
{% endif %}
当我访问该页面时,URL 路径是/event/
,当我单击第二个/下一页按钮时,它链接到/event/page/2/
,但 Wordpress 不运行相同的 php 文件 ( archive-event.php
)。
如何配置分页链接?我可以切换它们以将页面放入查询中/event?page=2
吗?
解决方案
问题最终与重写规则有关。Wordpress 期望页面的长度10
而不是6
. 添加此以functions.php
解决问题:
function get_events($query)
{
if(!is_admin() && $query->is_main_query() && is_post_type_archive('event')) {
$query->set('posts_per_page', '6');
}
}
add_action('pre_get_posts', 'get_events');
推荐阅读
- c++ - 无法显示丢失超过 100 的数字
- kubernetes - Kubernetes NetworkPolicy 限制服务的出口流量
- matlab - 如何在Matlab上找到多项式方程的转折点?
- xamarin - 在 DisplayAlert 之外获得点击
- javascript - 导入的实例在 Nuxt.js 中没有“this”引用
- node.js - 使用 RabbitMQ 登录 Mongodb 的内容
- tsql - 不同的功能是确定性的吗?T-sql
- python - 解析嵌套函数以提取python中的每个内部函数
- hive - 用于 hive 视图的 sqoop 导出
- wordpress - 使用重定向插件重定向博客网址并更改永久链接