首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >页面、分类法和自定义post类型之间的段塞碰撞

页面、分类法和自定义post类型之间的段塞碰撞
EN

WordPress Development用户
提问于 2018-01-11 14:04:56
回答 1查看 585关注 0票数 0

我有一个罕见的场景,我需要一个高级重写URL来检索所需的URL结构。事情是这样的。我有三个单独的项目可以操作:

  • 页面
  • 自定义邮政类型
  • 分类学

我需要以下URL结构

代码语言:javascript
复制
example.com/landing-page - This is the landing page
example.com/landing-page/child-page - This is the child of the landing page
example.com/landing-page/child-page/custom-post-type-name - This is the complicated part. 

所以,正如你所看到的,我想要实现的是某种永久链接层次结构,CPT在它的弹格中同时使用着陆器和子页面。有可能吗?

谢谢!

EN

回答 1

WordPress Development用户

发布于 2018-01-11 14:18:40

您可以通过两种方法来实现这一点:(1)使用两个页面,而CPT没有存档,或者(2)使用一个页面和一个带有存档的CPT。

Option 1-两页:

创建两个常规页面,将“子页面”设置为“登陆页”的子页面。注册CPT时,将其设置为没有存档,并设置其重写,以便单个CPT位于“子页面”之下。

代码语言:javascript
复制
register_post_type('wpse_post_type',
    array(
        'has_archive' => false,
        'rewrite' => array(
            'slug' => 'landing-page/child-page'
        ),
    )
);

这似乎回答了你最初的问题,好处是“子页面”是wp-admin中的一个页面,所以很容易编辑它的内容。缺点是,除非您创建一个特殊的页面模板--要么是page-child-page.php,要么是tpl-child-page.php,然后从page下拉列表中手动选择--否则您就没有任何用于CPT的存档。

Option 2-存档的一个页面和CPT

如果“登陆页”是页面,“子页”是您的CPT存档,而“自定义post类型名称”是单个CPT,那么您将把“登录页”设置为普通页。

注册CPT时,启用“子页面”作为比单个CPT高一级的存档:

代码语言:javascript
复制
register_post_type('wpse_post_type',
    array(
        'has_archive' => 'landing-page/child-page',
        'rewrite' => array(
            'slug' => 'landing-page/child-page'
        ),
    )
);

这里的好处是child-page将使用您现有的archive.php,因此您可能不需要调整主题中的任何内容就可以获得新D5的存档。当然,您也可以通过在主题中创建一个archive-wpse_post_type.php (更改您的实际CPT名称)来自定义此归档。如果您愿意,可以使用自定义字段来编辑wp中的某些内容。

最后一个提示--如果您已经注册了CPT,一定要首先使用unregister_post_type()删除它,然后重新注册它,因为一旦定义了CPT,就很难在不对其进行核武器的情况下更改重写规则。(如果您已经在CPT中创建了职位,请不要担心。取消注册不会将它们从数据库中删除;一旦重新注册CPT,它们将再次出现,这一次出现在正确的URL上)。

票数 0
EN
页面原文内容由WordPress Development提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://wordpress.stackexchange.com/questions/290811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档