I'm developing my own theme and came up with an issue that' I am confused with. I have two files that I'm trying to figure out. page.php and index.php.

I know that page.php is used for pages, of course, but when trying to set up a 404 page, for example:

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

    <section class="main-content">
        <div class="content-wrap">
            <div class="module page">
                <h1 class="title"><?php wp_title(''); ?></h1>
                <?php the_content(); ?>
            </div><!-- /.blog -->
        <?php get_sidebar(); ?>
        </div><!-- /.content-wrap -->

<?php endwhile; else : ?>
404 not found
<?php endif; ?>

Nothing will be displayed. Now, if I copy this content and stick it in index.php, I will have a 404 page. I have no idea what to do because index.php is required for a theme but I don't know what to do with it. Can someone explain the differences and what kind of content actually goes in it?


Index.php isn't for a specific page, and that's not how template files in themes work.

You will need to understand the template heirarchy


enter image description here

WordPress uses the Query String — information contained within each link on your web site — to decide which template or set of templates will be used to display the page.

First, WordPress matches every Query String to query types — i.e. it decides what type of page (a search page, a category page, the home page etc.) is being requested.

Templates are then chosen — and web page content is generated — in the order suggested by the WordPress Template hierarchy, depending upon what templates are available in a particular WordPress Theme.

WordPress looks for template files with specific names in the current Theme's directory and uses the first matching template file listed under the appropriate query section below.

With the exception of the basic index.php template file, Theme developers can choose whether they want to implement a particular template file or not. If WordPress cannot find a template file with a matching name, it skips down to the next file name in the hierarchy. If WordPress cannot find any matching template file, index.php (the Theme's home page template file) will be used.


Ian Stewart's WordPress THEME DEVELOPMENT TUTORIAL will surely help you the most.
It presents a nice theme for me.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.