WordPress custom post type archive-<post type>.php not working
Only two things required for custom post type archive page.
1) has_archive
should be true
2) You need to flush the permalink cache once after code update.
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, // only this is required to enable archive page else 404 error will occur
'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' );
Default archive.php
will work but if you wish to overwrite default one, you have to use a proper archive template archive-<custom_post_slug>.php
, e.g.
archive-events.php
Also, if you're just registering your post type, you will need to flush the permalink cache. Do this by changing permalink structure in to Wordpress admin.
Now you can access archive page https://domain/post_slug/
Note: if you choose Numeric
in permalink structure url would be https://domain/archives/post_slug/
not sure this will answer your question but did you reset your permalink structure?
If you just added a custom post type, you will need go to Permalinks page and press Save.
Hope that helps!