我有一个使用重写规则的自定义页面。“非分页”重写工作正常:
add_rewrite_rule(
\'^brand-list/([^/]*)/([^/]*)/?\',
\'index.php?pagename=brand-list&brand=$matches[1]§ion=$matches[2]\',
\'top\'
);
基本上是这样的url
/pagename=brand-list&brand=MyBrand§ion=MySection
结果是这样的,
/brand-list/MyBrand/Mysection
但是,使用分页时,页码永远不会返回到wordpress so$paged
第2页上仍然是0
add_rewrite_rule(
\'^brand-list/([^/]*)/([^/]*)/page/([0-9]+)?\',
\'index.php?pagename=brand-list&brand=$matches[1]§ion=$matches[2]&paged=$matches[3]\',
\'top\'
);
此url,
/pagename=brand-list&brand=MyBrand§ion=MySection&paged=2
, 结果是这样的,
/brand-list/MyBrand/Mysection/page/2
但仍显示第1页。检查
$paged
值输出为0,应为2。
如果我删除了重写规则/pagename=brand-list&brand=MyBrand§ion=MySection&paged=2
通过第2页显示和$paged
值为2。
有了重写规则,如果您有超过页码,则会得到以下结果:
/brand-list/MyBrand/Mysection/?paged=2
很明显,重写规则是个问题,但我不确定我遗漏了什么部分。
如果我使用此url:
/pagename=brand-list&brand=MyBrand§ion=MySection&paged=2
通过重写,其结果如下:
/page/2/pagename=brand-list&brand=MyBrand§ion=MySection
而且很有效!但我的url结构不正确。
-----编辑------
我的当前功能
function rewrite_rule_brands() {
global $wp_rewrite;
add_rewrite_tag(\'%brand%\',\'([^/]*)\');
add_rewrite_tag(\'%section%\',\'([^/]*)\');
add_rewrite_rule(\'^brand-list/([^/]*)/([^/]*)/page/([0-9]+)?\',\'index.php?pagename=brand-list&brand=$matches[1]§ion=$matches[2]&paged=$matches[3]\',\'top\');
add_rewrite_rule(\'^brand-list/([^/]*)/([^/]*)/?\',\'index.php?pagename=brand-list&brand=$matches[1]§ion=$matches[2]\',\'top\');
$wp_rewrite->flush_rules();
}
add_action( \'init\', \'rewrite_rule_brands\' );