【问题标题】:Custom Post Type Pagenation and URL Conflicts自定义帖子类型分页和 URL 冲突
【发布时间】:2013-09-24 01:39:00
【问题描述】:

我有一个自定义帖子类型,可以说是“工作”。 工作中有一些类别,'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。

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

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

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

【问题讨论】:

    标签: wordpress


    【解决方案1】:

    找到了解决办法!

    已删除页面作品。 而不是显示来自自定义页面模板的所有帖子,而是从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);
    }
    

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

    【讨论】:

      猜你喜欢
      • 2018-11-23
      • 2014-02-21
      • 2017-09-19
      • 2014-12-11
      • 2014-05-15
      • 2011-03-20
      • 2014-05-21
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多