我一直在四处阅读,似乎无法理解这一点。
除了分页似乎不起作用之外,一切都很正常,我正在添加第二条重写规则,这难道不能解决这个问题吗?
我可以很好地进入第一页,但任何超出第一页的页面都会抛出404。
这是我的代码:
// Rewrite the Sermon URL
function sermon_rewrite() {
$cpt = \'sermon\';
$tax = \'series\';
add_rewrite_rule(
\'^\'.$cpt.\'/([^/]+)/([^/]+)/([^/]+)/?\',
\'index.php?post_type=\'.$cpt.\'&\'.$tax.\'=$matches[1]&\'.$tax.\'=$matches[2]&\'.$cpt.\'=$matches[3]\',
\'top\'
);
add_rewrite_rule(
\'sermon/([^/]+)/page/?([0-9]{1,})/?$\',
\'index.php?post_type=\'.$cpt.\'&\'.$tax.\'=$matches[1]&paged=$matches[2]\',
\'top\'
);
}
add_action(\'init\',\'sermon_rewrite\');
EDIT
如果我转到以下url
这就是我的网站。com/布道/学期/儿童学期/第2页/
这不是:mysite。com/布道/学期/儿童学期/第2页/
知道是什么原因吗?
最合适的回答,由SO网友:souporserious 整理而成
找到了答案。我一切都对,只是没有按正确的顺序调用。我应该在发帖之前匹配页面url的第一个。
这是我的工作代码:
// Rewrite the Sermon URL
function sermon_rewrite() {
$cpt = \'sermon\';
$tax = \'series\';
add_rewrite_rule(
\'^\'.$cpt.\'/([^/]+)/page/([0-9]+)/?$\',
\'index.php?post_type=\'.$cpt.\'&\'.$tax.\'=$matches[1]&paged=$matches[2]\',
\'top\'
);
add_rewrite_rule(
\'^\'.$cpt.\'/([^/]+)/([^/]+)/([^/]+)/?\',
\'index.php?post_type=\'.$cpt.\'&\'.$tax.\'=$matches[1]&\'.$tax.\'=$matches[2]&\'.$cpt.\'=$matches[3]\',
\'top\'
);
}
add_action(\'init\',\'sermon_rewrite\');
SO网友:Jesse
这项工作:mysite.com/sermon/term/childterm/page2/
这不会:mysite.com/sermon/term/childterm/page2/
根据你的重写规则,我猜你的意思是
这项工作:mysite.com/sermon/term/page2/
这不会:mysite.com/sermon/term/childterm/page2/
我不是regex专家所以我只想到adding another rewrite rule 处理儿童期情况
add_rewrite_rule(
\'sermon/(.*?)/(.*?)/page/?([0-9]{1,})/?$\',
\'index.php?post_type=\'.$cpt.\'&\'.$tax.\'=$matches[2]&paged=$matches[3]\',
\'top\'
);