我正在尝试实现这种永久链接结构:
页面“关于我们”页面“故事”页面“故事”页面“故事”页面需要是页面模板,以便我可以编辑内容,并且还应该为帖子分页。
So域。com/about-us/stories/应显示带有分页和域的“story”CPT存档。com/about-us/stories/story-title/应该显示一个故事。
我似乎可以使用归档页面分页或post permalink,但不能同时使用两者。
如果我将我的CPT重写设置为
\'rewrite\' => array(
\'slug\' => __(\'about-us/stories\', \'text-domain\'),
\'with_front\' => false,
\'pages\' => true,
\'feeds\' => false,
)
post-permalink正如预期的那样工作,我可以跟踪到域的链接。com/about-us/stories/story-title/这很好,但是分页域。com/about-us/stories/will-not-work,在更改页面时出现404错误。如果我将我的CPT重写设置为
\'rewrite\' => array(
\'slug\' => __(\'stories\', \'text-domain\'),
\'with_front\' => false,
\'pages\' => true,
\'feeds\' => false,
)
归档页面上的分页可以工作,但永久链接后的页面现在是域。com/故事/故事标题,而不是域。com公司/
about-us/故事/故事标题/
我也试过玩add_rewrite_tag
和add_rewrite_rule
但我似乎无法解决这个问题。这种永久链接结构是可能的,还是我只需要满足于单个帖子的不同url结构?
最合适的回答,由SO网友:ooksanen 整理而成
在得到了Debug This plugin 还有一些类似问题的提示。至少到目前为止,经过一些快速测试,我没有遇到任何负面副作用。
如果我理解正确,问题是如果我将cpt重写设置为与存档页相同的slug/about-us/stories
, WP重写分页请求/about-us/stories/page/n/
到名为“page”的CPT,在本例中,该CPT返回404。
为了解决这个问题,我需要custom rewrite rule 要检查是否正在查询页码并相应地重写它,请执行以下操作:
function wpse288130_rewrite_rules() {
add_rewrite_rule(\'^(.?.+?)/page/(\\d)$\', \'index.php?pagename=$matches[1]&paged=$matches[2]\', \'top\');
}
add_action(\'init\', \'wpse288130_rewrite_rules\');
正则表达式的第一个捕获组
(.?.+?)
捕获页面名称
about-us/stories
第二组
(\\d)
捕获后面的任何数字
/page/
在的第二个参数中add_rewrite_rule
我们告诉WP将此重写为index.php?pagename=about-us/stories&paged=[page number]
第三个参数“top”告诉WP将此重写优先于默认重写。