Hi I’ve created a custom post type called shows.
here is the code for it.
<?php
add_action('init', 'show_register');
function show_register() {
//arguments to create the post type.
$args = array(
'label' => __('shows'),
'singular_label' => __('Show'),
'public' => true,
'show_ui' => true,
'capability_type' => 'post',
'hierarchical' => true,
'has_archive' => true,
'supports' => array('title', 'editor', 'thumbnail', 'custom-fields'),
'rewrite' => array('slug' => 'shows', 'with_front'
=> false), );
//Register type and custom taxonomy for type.
register_post_type( 'shows' , $args );
register_taxonomy("Show-type", array("shows"),
array("hierarchical" => true, "label" => "Show
Types", "singular_label" => "Show Type", "rewrite"
=> true, "slug" => 'show-type'));
}
?>
I’ve created 2 files that follow accordingly to the wordpress hierarchy and called them archive-shows.php
and single-shows.php
. These should automatically link to the correct pages however for some reason they both default back to index.php.
The normal single.php
and archive.php
work as normal.
Fix’s tried Permalinks Flushed has archive = true
please any suggestions.
You have to flush your permalinks after you register these things. There are ways to do that automatically but the quick and dirty way is to browse to
wp-admin->Settings->Permalinks
and click “Save Changes”. That will work fine if this is your site and you aren’t distributing a plugin. If this is a plugin (which it probably should be), you can runflush_rewrite_rules();
on the plugin’s activation hook. An example of doing that from the Codex:Other than that, I did not have any issue with your code (copied un-altered). The CPT registered and both
single-shows.php
andarchive-shows.php
worked after flushing the permalinks.