custom post type index page

I have registered a custom post type and I want to create a page where I will list some posts, it will be like an index page.

I have created an archive page called mycpt-archive.php and a page called myCPT.php.

Read More

I’ve added a custom URL in the menu called “myCPT” like this : www.mywebsite.com/mycpt
Now, when I click from the front-end menu on “myCPT” it displays the mycpt-archive.php content and not the myCPT.php.

I’ve looked through the template hierarchy from CODEX and it seems I’m on the right track.

When I click on “myCPT” from the front-end menu the page displayed is mycpt-archive.php not myCPT.php which I’m expecting to open.

What am I missing here ?
Thank you !

Related posts

2 comments

  1. If you have:


    register_post_type( 'my_custom_post_type', $args );

    And you need a custom page to displays all entries from this custom post type, you have to create: archive-my_custom_post_type.php.
    But if you don’t need a custom page, wordpress will use archive.php to display you custom post type archive.

    If you only need to customize the entry page, you have to create: single-my_custom_post_type.php

    Where are you creating the custom post type, in theme functions.php or using a plugin?

    If using functions.php, you need to create archive-my_custom_post_type.php or single-my_custom_post_type.php in theme’s folder.

    If using a plugin, you need to create archive-my_custom_post_type.php or single-my_custom_post_type.php in plugins’s folder and point wordpress to read it, so include this function in your plugin:

    function get_custom_post_type_template($template) {
        global $post;
    
        if ($post->post_type == 'my_custom_post_type') {
            $template = dirname( __FILE__ ) . '/archive-my_custom_post_type.php';
        }
        return $template;
    }
    
    //add_filter( "single_template", "get_custom_post_type_template" ); //for single page
    add_filter( "archive_template", "get_custom_post_type_template" ); //for archive
    
  2. It almost sounds like you would create a custom template page named whatever and put the custom query code you want into that particular template page. Once you make the template page, create an actual wordpress page and set it to use that custom template page. Does that make sense.

    1. Create custom template page.
    2. put the necessary comments to name the template page.
    3. Write the custom wp_query to pull the particular posts you want
    4. Create a page inside of wordpress.
    5. Set it to use the template page you create.
    6. Hit publish

    Once you are done, you will probably want to edit the template page to tweak and refine your query.

    Let me know if I’m on the right track for your needs.

Comments are closed.