我开发了一个自定义主题,其中包含一个名为events
. 然而,出于某种原因,WP拒绝使用带有文件名的存档页面模板archive-events.php
根据WP的模板层次结构。WP始终默认为index.php
作为此帖子类型的模板。
之前,我在WP中配置了一个页面,该页面被设置为slug/events/
它现在是自定义post类型的slug。该页面现在已被删除,我不知道这是否是导致WP拒绝使用的问题archive-events.php
用于自定义帖子类型的存档列表。我试图修改并重新保存我的永久链接结构,但没有成功。目前,permastruct设置为“Post name”,即。http://my.domain/post-name/
更多详细信息:
我已经注册了一个自定义帖子类型events
(下面的代码)
帖子类型的slug是“events”,单个帖子在http://domain.com/events/post-name
帖子类型的存档页面可访问/events/
但正在使用index.php
尽管我已经为帖子类型创建了一个归档模板archive-events.php
为了确认WP用于呈现自定义帖子类型的归档页面的模板,我创建了一个函数,用于输出$GLOBALS[\'current_theme_template\']
用于呈现页面。这确认WP正在使用index.php
呈现存档页在我的header.php
文件我在回显函数get_post_type_archive_link(\'events\')
确认WP认为我的自定义帖子类型的存档页应为http://domain.com/events/
archive.php
和index.php
WP模板按预期提供,但无论怎样,自定义帖子类型的模板都会被WP跳过。作为测试,我将现有的自定义帖子类型重命名为新类型,将所有查询重新映射到该CPT,并相应地更新了模板名称。然而,WP拒绝服务cpt-archive.php
作为自定义帖子类型的模板,并用于archive.php
或index.php
取而代之的是这是我的functions.php
注册职位类型的代码:function registerEvents()
{
$labels = array(
\'name\' => _x( \'Events\', \'Post type general name\', \'textdomain\' ),
\'singular_name\' => _x( \'Event\', \'Post type singular name\', \'textdomain\' ),
\'menu_name\' => _x( \'Events\', \'Admin Menu text\', \'textdomain\' ),
\'name_admin_bar\' => _x( \'Events\', \'Add New on Toolbar\', \'textdomain\' ),
<snip>
);
$args = array(
\'labels\' => $labels,
\'public\' => true,
\'hierarchical\' => false,
\'publicly_queryable\' => true,
\'exclude_from_search\' => false,
\'show_ui\' => true,
\'show_in_menu\' => true,
\'show_in_rest\' => false,
\'menu_position\' => 5,
\'menu_icon\' => \'dashicons-calendar-alt\',
\'capability_type\' => \'post\',
\'has_archive\' => true,
\'query_var\' => true,
\'delete_with_user\' => false,
\'supports\' => array(
\'title\',
\'editor\',
\'excerpt\',
\'thumbnail\',
\'page-attributes\'
),
\'taxonomies\' => array( \'kind\' ), // Custom tax previously registered
\'rewrite\' => array( \'slug\' => \'events\', \'with_front\' => false ),
);
register_post_type( \'events\', $args );
}
add_action( \'init\', \'registerEvents\' );