永久链接结构/页面/页面/CPT-POST提供404分页

时间:2017-12-08 作者:ooksanen

我正在尝试实现这种永久链接结构:

页面“关于我们”页面“故事”页面“故事”页面“故事”页面需要是页面模板,以便我可以编辑内容,并且还应该为帖子分页。

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_tagadd_rewrite_rule 但我似乎无法解决这个问题。这种永久链接结构是可能的,还是我只需要满足于单个帖子的不同url结构?

1 个回复
最合适的回答,由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将此重写优先于默认重写。

结束

相关推荐

How to replace permalinks

我已将wordpress项目导出并导入live server。现在的问题是,我将permalink结构作为“localhost”格式。当我单击网站中的任何链接时,它会将我重定向到localhost。我怎样才能改变这一点?我的htaccess文件如下所示<IfModule mod_rewrite.c> RewriteEngine On RewriteBase /myproject/ RewriteRule ^index\\.php$ - [L] RewriteCo