如何在WordPress中实现同一页面的多个分页

问题描述 投票:0回答:1

我正在尝试执行基本功能,可以在一个页面上为不同的自定义帖子类型实现多个分页。

最初我尝试通过自定义分页来完成。例如,现在我已将分页号作为 url 参数传递。

华映新闻

/release/?page_news=1

/release/?page_news=2 ...

CPT 资源

/release/?page_resource=1

/release/?page_resource=2 ...

但是看起来很笨拙。 我想它应该看起来像

期待CPT消息

/发布/新闻/

/发布/新闻/2 ...

CPT 资源

/发布/资源/

/发布/资源/2 ...

如果有人对这种情况有更好的方法,请告诉我。

php wordpress
1个回答
0
投票

我在下面尝试让它工作。

创建自定义重写

  1. 注册查询变量:代码使用

    var1
    过滤器添加
    var2
    query_vars
    作为自定义查询变量。

  2. 重写规则:创建自定义重写规则,匹配格式为

    /payments-slug/var1-value/var2-value/
    的 URL,并使用适当的查询参数将其重写为相应的
    index.php

<?php
global $wp;
@$wp->add_query_var('var1');
@$wp->add_query_var('var2');

add_filter('query_vars', 'wpse12965_query_vars');
function wpse12965_query_vars($query_vars)
{
  $query_vars[] = 'var1';
  $query_vars[] = 'var2';
  return $query_vars;
}
add_action('init', 'wpse12065_init');
function wpse12065_init()
{
  global $payments_page_id;
  $post = get_post($payments_page_id);
  $slug = @$post->post_name;
  add_rewrite_rule(
    $slug . '(/([^/]+))?(/([^/]+))?/?(/([^/]+))?(/([^/]+))?/?',
    'index.php?pagename=' . $slug . '&var1=$matches[2]&var2=$matches[3]',
    'top'
  );
}

对于分页,在每个 wp_query 中添加以下代码片段

  1. 总页数和范围:它计算总页数并设置要显示的页面链接数的范围。

  2. 分页循环:循环遍历总页数并生成页码列表作为链接。当前页面突出显示,而其他页面则被链接。

  3. 输出:每个页面链接都指向基于分类名称 (

    $taxName
    ) 和页码的 URL。

<div class="pagination">
    <div class="moreCenter animateme animated">
        <div class="paginationBox">
            <?php
            $totalPages = $wc_query->max_num_pages;
            $range = 4;
            $showitems = ($range * 2) + 1;
            for ($i = 1; $i <= $totalPages; $i++) {
                if (1 != $totalPages && (!($i >= $paged + $range + 1 || $i <= $paged - $range - 1) || $totalPages <= $showitems)) {
                    $page_url = get_permalink() . '' . $taxName . '/' . $i;
                    echo ($paged == $i) ? "<span class=\"current\">" . $i . "</span>" : "<a href='" . $page_url . "' class=\"inactive\">" . $i . "</a>";
                }
            }
            ?>
        </div>
    </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.