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

时间:2013-09-22 13:53:16

标签: wordpress

我有一个自定义帖子类型,让我们说'工作'。 工作中有一些类别,'taskA'和'taskB' 在类别taskA中有一些帖子{post1,post2,post3},在类别taskB中有一些帖子{post4,post5,post6}。

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

“工作”下的所有帖子都应该将网址设为mydomain.com/work/post1 ... 因此,在注册自定义帖子类型时,我使用重写slug作为“工作”。 一切都工作正常,直到我希望pagenation工作。 在访问网址mydomain.com/work/page/1时,会抛出错误404。

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

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

另外,我想列出'taskA'@ mydomain.com/work/taskA下的所有帖子 使用重写slug作为“工作”没有帮助。使用重写slug作为“工作任务”,一切似乎都正常。 但网址看起来像mydomain.com/work-task/taskA 任何改变方法的建议?

1 个答案:

答案 0 :(得分:2)

找到解决方案!

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

对于Taxonomy,我将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);
}

维护了网址结构,并且页面工作也正常工作!