自定义帖子类型分页和 URL 冲突

问题描述 投票:0回答:1

我有一个自定义帖子类型,可以说“工作”。 工作下有一些类别,“taskA”和“taskB” 类别taskA中有一些帖子{post1, post2, post3},类别taskB中有一些帖子{post4,post5,post6}。

我想列出所有帖子@

mydomain.com/work
所以我创建了一个带有标题作品的页面。 并列出了所有帖子。

“工作”下的所有帖子的网址应为

mydomain.com/work/post1
... 因此,在注册自定义帖子类型时,我使用重写段作为“工作”。 一切都工作正常,直到我想要分页工作。 访问 url 时,
mydomain.com/work/page/1
,抛出错误 404。

将重写 slug 更改为“有效”时,错误 404 已解决。

我应该遵循什么方法来维护所需的 url 结构?

我还想列出“taskA”下的所有帖子@

mydomain.com/work/taskA
使用 rewrite slug 作为“工作”并没有帮助。在使用 rewrite slug 作为“工作任务”时,一切似乎都工作正常。 但网址看起来像
mydomain.com/work-task/taskA
对于改变方法有什么建议吗?

php wordpress
1个回答
2
投票

找到解决办法了!

删除了页面作品。 并且不是显示自定义页面模板中的所有帖子,而是从 archive.php 显示它。 Pagenation 将在这一步开始工作。

对于分类法,我将 slug 更改为“work”,并在functions.php 中添加了以下代码。

add_filter( 'rewrite_rules_array', 'blog_rewrite_rules' );
function blog_rewrite_rules( $rewrite_rules )
{
  $topics = get_terms('work-category', array('hide_empty' => true));
  if(is_wp_error($topics))
    return $rewrite_rules;

  $newRules = array();

  foreach($topics as $topic){
    $newRules['work/'.$topic->slug.'/page/?([0-9]{1,})/?$'] = 'index.php?work-category='.$topic->slug.'&paged=$matches[1]';
    $newRules['work/'.$topic->slug.'/?$']                   = 'index.php?work-category='.$topic->slug;  
  }

  return array_merge($newRules,$rewrite_rules);
}

URL 结构保持不变,分页也正常工作!

© www.soinside.com 2019 - 2024. All rights reserved.