我有一个自定义帖子类型,让我们说'工作'。 工作中有一些类别,'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
任何改变方法的建议?
答案 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);
}
维护了网址结构,并且页面工作也正常工作!