自定义帖子类型的帖子加载页面模板

时间:2015-10-30 作者:Brick Yang

我制作了一个名为“event”的自定义帖子类型。奇怪的是,当我访问这种类型的帖子时,它会显示归档事件模板。如果没有archieve-event.php 文件,它将加载页面模板。

我把single-event.php 主题根目录中的文件(它应该显示“单个事件”),但显然系统忽略了它。

我通过以下方式创建自定义帖子类型:

register_post_type(\'event\', 
        array(
            \'labels\'                        => PW_get_post_type_label(\'活动\'),
            \'public\'                            => true,
            \'show_in_nav_menus\'     => false,
            \'show_in_admin_bar\'     => false,
            \'menu_position\'         => 5,
            \'capability_type\'       => array(\'event\',\'events\'),
            \'map_meta_cap\'          => true,
            \'supports\'              => array(\'title\',\'editor\',\'thumbnail\',\'comments\'),
            \'taxonomies\'                => array(\'event_category\'),
            \'has_archive\'                   => true,
            \'rewrite\'               => array(\'slug\' => \'event\'),
            \'publicly_queryable\'    => true,
            )
        );
关于链接和重写规则有两段代码

add_filter(\'post_type_link\', \'PW_custom_post_type_link\', 1, 3);
function PW_custom_post_type_link( $link, $post = 0 ){
    if ( $post->post_type == \'event\' ){
        return home_url( \'event/\' . $post->ID );
    } else {
        return $link;
    }
}

add_action( \'init\', \'PW_custom_post_rewrites_init\' );
function PW_custom_post_rewrites_init(){
    add_rewrite_rule( \'event/([0-9]+)?$\', \'index.php?post_type=event&p=$matches[1]\', \'top\' );
}
这篇文章的链接就像dev.photoworld。com。cn/event/POST-ID

1 个回复
SO网友:Brick Yang

好的,完成了。这是因为我需要刷新管理菜单中的permalink选项。每次更改重写或链接内容时,都需要转到“选项->永久链接”并再次保存。