重写url后如何修复分页?也就是说。Www.site.com/players/type/PRO/PAGE/3/

时间:2011-07-16 作者:Andrew

我有一个自定义的帖子类型players, 和存档播放器。php会在如下地址列出它们www.site.com/players.

然后我使用一个url,如www.site.com/players?type=pro 只列出专业玩家的另一页(基于自定义用户角色修改了wp\\u查询,因此我不使用分类法)。我决定重写urlwww.site.com/players/pro.

页面本身工作正常,但我的问题是:如果url类似于www.site.com/players/type/pro/page/3/? 目前我找不到页面。我正在使用wp page navi进行分页。事实上,当我把分页作为?type=pro 任何一个

下面是我的重写代码。使用wordpress或mod\\u rewrite重写是否更好?我对这两者都没有经验。我这样做对吗?我到处都读过一些其他的问题和帖子,但整个事情让我很困惑。

function add_query_vars($aVars) {
$aVars[] = "type";
return $aVars;
}

add_filter(\'query_vars\', \'add_query_vars\');

function add_rewrite_rules($aRules) {
$aNewRules = array(\'players/type/([^/]+)/?$\' => \'index.php?post_type=players&type=$matches[1]\');
$aRules = $aNewRules + $aRules;
return $aRules;
}

add_filter(\'rewrite_rules_array\', \'add_rewrite_rules\');

2 个回复
最合适的回答,由SO网友:Otto 整理而成

您必须添加另一条规则,将/页/#映射到(&P);分页=#变量。

但实际上,通过过滤规则数组,您在这里做的是向后的。只需调用add\\u rewrite\\u rule来添加规则就更有意义了。

function plugin_name_add_rewrite_rules() {
  add_rewrite_rule(\'players/type/([^/]+)/?$\',
   \'index.php?post_type=players&type=$matches[1]\',
   \'top\');
  add_rewrite_rule(\'players/type/([^/]+)/page/([0-9]+)?$\',
   \'index.php?post_type=players&type=$matches[1]&paged=$matches[2]\',
   \'top\');
}
add_filter(\'init\', \'plugin_name_add_rewrite_rules\');

SO网友:moonbas3

我无法发表评论,但选定的答案似乎过时了。在最新的Wordpress版本中,规则似乎是按顺序检查的,因此您需要先添加分页重写规则才能正常工作。

e、 g。

function plugin_name_add_rewrite_rules() {
    add_rewrite_rule(\'players/type/([^/]+)/page/([0-9]+)?$\',\'index.php?post_type=players&type=$matches[1]&paged=$matches[2]\',\'top\');
    add_rewrite_rule(\'players/type/([^/]+)/?$\',\'index.php?post_type=players&type=$matches[1]\',\'top\');
}
add_filter(\'init\', \'plugin_name_add_rewrite_rules\');

结束

相关推荐

Pagination with custom loop

我的问题可能是Pagination not working with custom loop, 但有一种不同。我使用自定义循环来显示flash游戏。我想按类别在游戏页面上分页。类别php:<?php if ($cat) { $cols = 2; $rows = 4; $paged = ((\'paged\')) ? get_query_var(\'paged\') : 1; $post_per_page = $cols * $rows; // -1 s