我有一个自定义帖子类型(CPT),名为;“职业”;带“,”;“职业”;作为slug。
我用Elementor创建了我的职业列表页面(页面slug也是“职业”),删除了Posts小部件,并使用查询设置选择我的职业CPT。然后,我再次使用Elementor为我的单个职业帖子创建了一个帖子主题。这些单篇帖子可以正常工作,但现在当我单击返回我的职业列表页面时,我得到的归档页面与我用Elementor创建的页面完全不同(我看到该页面现在使用的是带有Reveal template插件的archive.php)。我试图通过选择自定义页面模板来强制使用该模板,但这没有帮助。我还尝试重置永久链接,但也没有帮助。
当我试图在Elementor中打开我的职业页面时,我会得到;无法加载预览错误;。当我将页面URL从;“职业”;“到”;“职业生涯”;或“或”;未结头寸;然后错误消失了,我现在可以用Elementor打开页面(使用新的slug)。
CPT段塞不能与页面段塞相同,这是正确的假设吗?有没有更好的方法来实现这一点(最好对页面和CPT使用相同的slug)?甚至在Elementor pro的帮助下?
这是我的CPT代码:
function create_careers_posttype() {
register_post_type( \'careers\',
array(
\'labels\' => array(
\'name\' => __(\'Careers\'),
\'singular_name\' => __(\'Career\')
),
\'public\' => true,
\'has_archive\' => true,
\'rewrite\' => array(\'slug\' => \'careers\'),
\'show_in_rest\' => true,
\'supports\' => array(\'title\', \'page-attributes\'),
)
);
}
add_action( \'init\', \'create_careers_posttype\' );
最合适的回答,由SO网友:Tom J Nowell 整理而成
你不能用子弹careers
作为页面slug,因为它已经用作CPT名称。/careers
是你的帖子类型存档,这就是它被加载的原因archive.php
而不是page.php
.
即使您确实有一个带有该段塞的页面,归档重写规则也具有更高的优先级。您还可以在生成的站点地图中找到它/careers
slug还用于为该类型的各个帖子生成永久链接。
您所能得到的最接近的方法是关闭存档。
我试图通过选择一个自定义页面模板来强制使用该模板,但没有任何帮助。
这不起作用,因为页面从来都不是从显示开始的。WordPress认为,根据主查询,它是在类型为careers
并将根据标准模板层次结构进行操作,选择它能找到的最具体的匹配模板。E、 g.如果archive-careers.php
如果可用,则会加载该文件。
请记住,选择的模板由主查询的参数决定。WordPress没有加载页面,因为您在page.php
, 它在另一个方向,它装载了page.php
因为主查询说它是针对一个页面的,如果查询中的页面指定了自定义页面模板,它可能会决定加载该页面模板。但如果这是一个没有发生的档案。查看模板层次结构以了解更多详细信息。
甚至在Elementor pro的帮助下?
如果您想使用Elementor设置归档的样式,那么您需要联系Elementor支持部门或在Elementor社区中发布。第三方插件开发支持在这里是离题的,不在此堆栈范围内。