WordPress新手,我一直在尝试为自定义帖子类型创建一个存档页面,当我点击localhost/websitename/wordpress/archive-event.php
的链接时,我得到一个404.这是我注册帖子类型的代码:
add_action('init', 'event_register');
function event_register() {
$labels = array(
'name' => _x('Events', 'post type general name'),
'singular_name' => _x('Event', 'post type singular name'),
'add_new' => _x('Add New', 'event'),
'add_new_item' => __('Add New Event'),
'edit_item' => __('Edit Event'),
'new_item' => __('New Event'),
'view_item' => __('View Event'),
'search_items' => __('Search Events'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => array('slug' => 'event'),
'has_archive' => 'event',
'capability_type' => 'post',
'hierarchical' => false,
'menu_position' => null,
'supports' => array('title','editor','thumbnail'),
);
register_post_type( 'event' , $args );
}
我尝试过rewrite => true
,has_archive => true
,刷新重写规则,甚至为帖子类型注册分类。 single-event.php
工作正常。现在怎么办?
答案 0 :(得分:6)
好的,我和你有类似的问题,现在我相信我已经解决了。
我不确定我的代码会准确反映您需要做什么,但它应该很容易适应。请注意归档URL的重写规则。
<强>的functions.php 强>
function my_custom_posts() {
$labels = array(
'name' => _x( 'Events', 'post type general name' ),
'singular_name' => _x( 'Event', 'post type singular name' ),
'add_new' => _x( 'Add New', 'event' ),
'add_new_item' => __( 'Add New Event' ),
'edit_item' => __( 'Edit Event' ),
'new_item' => __( 'New Event' ),
'all_items' => __( 'All Events' ),
'view_item' => __( 'View Event' ),
'search_items' => __( 'Search Events' ),
'not_found' => __( 'No events found' ),
'not_found_in_trash' => __( 'No events found in the Trash' ),
'parent_item_colon' => '',
'menu_name' => 'Events'
);
$args = array(
'labels' => $labels,
'description' => 'Holds our events and event specific data',
'public' => true,
'menu_position' => 5,
'supports' => array( 'title' ),
'has_archive' => true,
'publicly_queryable' => true,
'show_ui' => true,
'query_var' => true,
'rewrite' => array('slug' => 'events', 'with_front' => true),
'capability_type' => 'post',
'hierarchical' => false,
);
register_post_type( 'event', $args );
//flush_rewrite_rules();
}
add_action( 'init', 'my_custom_posts' );
add_action('init', 'event_archive_rewrite');
function event_archive_rewrite(){
add_rewrite_rule('^events/([0-9]{4})/([0-9]{2})/?','index.php?post_type=event&year=$matches[1]&monthnum=$matches[2]','top');
add_rewrite_rule('^events/([0-9]{4})/?','index.php?post_type=event&year=$matches[1]','top');
}
现在允许我像这样访问事件:
example.com/events/2013/07/01
请记住准备好适当的存档模板,例如
archive-event.php
另外,如果您只是注册帖子类型,则需要刷新永久链接缓存。通过进入WordPress管理员并再次“保存”永久链接结构来实现此目的。
真的希望这有助于某人!
谢谢, MIKEY。
答案 1 :(得分:2)
不确定这会回答您的问题,但您是否重置了永久链接结构?
如果您刚刚添加了自定义帖子类型,则需要转到“永久链接”页面并按“保存”。
希望有所帮助!
答案 2 :(得分:0)
在您的URL示例中,您似乎试图获取实际的模板文件名本身。
但如果您已将slug定义为event
,您应该只需访问localhost / websitename / wordpress / event
答案 3 :(得分:0)
我使用的是 CPT UI 插件,默认情况下,“已存档”标志设置为False。 您可以在以下位置进行更改:
"Edit Post Type" tab > "Settings" > "Has Archive"
将其设置为True,并且不要忘记刷新永久链接(在“永久链接”页面上单击“保存”)。
答案 4 :(得分:0)
永久链接结构存在问题。我的更改设置=>我的固定链接到“日期和名称”或“月份和名称”或“帖子名称”,这已解决了我的问题。