我制作了一个名为“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