归档页面的自定义帖子类型默认为index.php

时间:2020-03-16 作者:strangeattractor

我开发了一个自定义主题,其中包含一个名为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.phpindex.php WP模板按预期提供,但无论怎样,自定义帖子类型的模板都会被WP跳过。作为测试,我将现有的自定义帖子类型重命名为新类型,将所有查询重新映射到该CPT,并相应地更新了模板名称。然而,WP拒绝服务cpt-archive.php 作为自定义帖子类型的模板,并用于archive.phpindex.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\' );
    

  • 1 个回复
    SO网友:strangeattractor

    这个问题的解决方案是:

    将自定义帖子类型的名称从“事件”更改为“slug”/events/) 至“事件”(带slug/event/)/events/ 显示自定义帖子类型的存档虽然从技术上来说,这并不能回答为什么WP拒绝按照WP自己的模板层次结构提供和显示自定义帖子类型的存档模板的问题,但它解决了我的问题。

    在此过程中,我使用wp cli刷新wp的内部缓存并删除所有瞬态,但没有任何效果。

    相关推荐

    Wordpress Permalinks problem

    Wordpress版本4.8(我不想使用4.9.1,因为模板页面属性有问题)我有个大问题。我读过很多解决方案,但对我来说并不适用。我正在创建一个自定义wordpress项目,一开始我的永久链接有问题。如果我使用“Plain”,这很好,但如果更改为例如“Date and time or something”,则会出现以下错误:我试着改变。htaccess,但看起来不错,这是我的。htaccess# BEGIN WordPress <IfModule mod_rewrite.c>