您可以通过两种方式完成此操作:(1)使用两个页面和一个不带存档的CPT,或(2)使用一个页面和一个带存档的CPT。
Option 1 - two Pages:
创建两个常规页面,将“子页面”设置为“登录页面”的子页面。注册CPT时,将其设置为无存档,并将其重写设置为各个CPT位于“子页”下。
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
然后从页面模板下拉列表中手动选择-您没有任何CPT存档。
Option 2 - one Page and CPT with archive
如果“登录页”是一个页面,“子页面”是您的CPT存档,“自定义帖子类型名称”是一个CPT,您可以将“登录页”设置为普通页面。
注册CPT时,要将“子页”启用为比单个CPT高一级的存档,请执行以下操作:
register_post_type(\'wpse_post_type\',
array(
\'has_archive\' => \'landing-page/child-page\',
\'rewrite\' => array(
\'slug\' => \'landing-page/child-page\'
),
)
);
这里的好处是
child-page
将使用您现有的
archive.php
因此,您可能不必调整主题中的任何内容来归档新的CPT。当然,您也可以通过创建
archive-wpse_post_type.php
(更改为您的实际CPT名称)在主题中。如果愿意,您可以使用自定义字段在wp admin中编辑某些内容。
最后一个提示-如果您已经注册了CPT,请确保使用unregister_post_type()
首先擦除它,然后重新注册它,因为一旦定义了CPT,就很难在不影响它的情况下更改重写规则。(如果您已经在CPT中创建了帖子,请不要担心。取消注册不会将其从数据库中删除;一旦您重新注册CPT,它们将再次显示,这次显示在正确的URL上)。