我有一个自定义的帖子类型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\');
最合适的回答,由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\');