1

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

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

“工作”下的所有帖子的网址都应为mydomain.com/work/post1......所以在注册自定义帖子类型时,我将重写 slug 用作“工作”。一切正常,直到我想要分页工作。在访问 url 时,mydomain.com/work/page/1会抛出错误 404。

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

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

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

4

1 回答 1

2

找到了解决方案!

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

对于分类学,我将 slug 更改为“工作”,并在 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);
}

网址结构得到维护,分页也能正常工作!

于 2013-09-23T14:28:43.260 回答