"This article will show the WordPress theme file execution hierarchy. In short, we’ll look at which files get served up when you load a page in WordPress. You might already know that detail post is served by single.php and detail page is served by page.php, but WordPress will search for different files depending on a variety of factors, so we’ll be looking at how this works!
First thing we should establish is this: without index.php and style.css your theme is no longer a valid WordPress theme… so it stands to reason that if all you have is those two files, each page will you try to load will be served up by index.php. Take a quick peek at this “cheatsheet” to see what I’m referring to:
Now let’s look at some details about the execution order. I am going to show you the flow in which WordPress will search for files in your active theme folder. I hope this will be useful when you create a WordPress theme from now on:
I will go through each type of files one by one and will show the execution hierarchy for the same.
Home Page
This is the first and most important page of any website. So WordPress has provided the scope to customize the page. Let’s have a look at the file hierarchy for the home page.- front-page.php
- home.php
- index.php
WordPress Post Detail
- single-[post-type].php
- single.php
- index.php
So for example, if your custom post type is product then it will be single-product.php
To know more how to add new post types in WordPress you can refer to this link.
WordPress Page Detail
- [custom-template].php
- page-[slug].php
- page-[id].php
- page.php
- index.php
If none are found, it will search for the file with the slug of the current page. Basically, if the slug is aboutus, then it will search for the file page-aboutus.php in active theme folder.
WordPress will search for the files with the ID just like searching for the files with slug.
Category Page
- category-[slug].php
- category-[id].php
- category.php
- archive.php
- index.php
Tag Page
- tag-[slug].php
- tag-[id].php
- tag.php
- archive.php
- index.php
Taxonomy Page
- taxonomy-[tax]-[term].php
- taxonomy-[tax].php
- taxonomy.php
- archive.php
- index.php
Author Page
- author-[author-nicname].php
- author-[author-id].php
- author.php
- archive.php
- index.php
Attachment Page
- [mime-type].php
- attachment.php
- single.php
- index.php
Date Page
- date.php
- archive.php
- index.php
Archive Page
- archive.php
- index.php
Search Page
- search.php
- index.php
404 Page
- 404.php
- index.php
Conclusion
You can obviously use this information in a wide range of ways to load up custom templates for various pages… In many cases, even if you’re using an existing theme, you can get a custom solution without modifying the existing files. You will just need to create new file and give it a new name using the information above.Share your thoughts and any additional file which can be included above hierarchy."