用木材管理页面中的两个分页

问题描述

我在一个项目中使用木材,我必须在搜索页面上进行多个查询,每个查询一个分页

/* search.PHP */
if (!isset($paged) || !$paged){
    $paged = 1;
}
$context = Timber::get_context(); 
$args_1 = array("post_type" => "events","posts_per_page" => 10,"paged" => $paged);
$args_2 = array("post_type" => "news","paged" => $paged);
$context["events"] = new \Timber\PostQuery($args_1);
$context["news"] = new \Timber\PostQuery($args_2);
Timber::render('search.twig',$context);

/* search.twig */
<!-- events -->
{% for event in events %}
    {{ event.post_title }}
{% endfor %}
{% if events.pagination.pages is not empty %}
    {% for event_page in events.pagination.pages %}
        <a href="{{ event_page.link }}" class="page-numbers">{{ event_page.name }}</a>
    {% endfor %}
{% endif %}
<!-- news -->
{% for new in news %}
    {{ new.post_title }}
{% endfor %}
{% if news.pagination.pages is not empty %}
    {% for new_page in news.pagination.pages %}
        <a href="{{ new_page.link }}" class="page-numbers">{{ new_page.name }}</a>
    {% endfor %}
{% endif %}

通过这段代码,我得到了每个 post_type 循环的分页,问题是当我转到事件的页码时,另一个(新闻)也会转到相同的页码,反之亦然,正常,因为url 看起来像这样 my_domain/page/2/?s=... 并且 /page/2/ 被两个分页捕获。

对不起,我的英语不好,如果有人有任何建议,我很感激。

谢谢

解决方法

我建议您为每个循环显示特定数量的帖子,并为用户提供转到帖子存档页面的能力。

您不应该在多循环帖子索引页面上提供导航,因为结果就像您说的那样,是一个唯一的永久链接。

通过使用存档页面,您将获得查询结果并能够显示帖子页面导航,但在每种情况下永久链接都是唯一的,因为您正在查询 2 个不同的帖子或类别......

您可以使用 get_post_type_archive_link( string $post_type ) 获取存档链接。

检索帖子类型存档的永久链接。