0
votes

I'm trying to write a template for a Wordpress site to use as a static front page (with some dynamic content). I've created the Page, and set it to use my 'Home' template (which is saved in frontpage.php). This frontpage.php file is identical to my page.php file, used for displaying pages like 'About' and 'Contact'. However, when I go to my front page, it displays the content of all three pages: Home, About and Contact.

It seems like the Wordpress loop, which just gets the content of a single page on About and Contact, is getting the content of all pages when I visit Home. What could be causing this?

My page.php looks like this:

<?php get_header(); ?>

<div id="content">
<?php while(have_posts()) : the_post() ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <h2 class="entry-title"><?php the_title(); ?></h2>

        <div class="entry-content">
<?php the_content(); ?>
        </div><!-- .entry-content -->

        <?php edit_post_link('Edit', '<p>', '</p>'); ?>

    </div><!-- #post-<?php the_ID(); ?> -->
<?php endwhile; ?>
</div><!-- #content -->

<?php get_footer(); ?>

[Using Wordpress 3.2.1.]

3
Note that you have a closing </a> tag that is not opened anywhere. And please add some more code, because this part seems fine. If you are sure that this template and your frontpage.php are identical, make sure you are using that correct template in your Wordpress Admin. - Justus Romijn
Sorry - that was left in after I removed some formatting from this example code. Nothing structural - just, for example, removed a lengthy link from that header. Fixed the code. - Daniel Buckmaster
@Justus Romijn I'm sure the files are the same. I made a modification - I reverted the Home page to the Default template, then created a page-home.php as a copy of page.php with an added comment to identify it. When I load my home page, the comment is there, and all three pages are shown. - Daniel Buckmaster

3 Answers

0
votes

because you have the while loop, it displays all the pages, just before the while loop, change the following code to alter the query.

<?php get_header(); ?>
<div id="content"> 
<?php 
query_posts('p=5');//substitute 5 with the front page id
while(have_posts()) : the_post() ?>
....the same...

hope it helps.

0
votes

You might want to take a look in your Wordpress admin at "Settings -> Reading". By default, the homepage is a list of articles, you need to change this to a static page. Hope this might fixes your problem!

Example below of a Wordpress site I build which has a static page named Homepage as frontpage: enter image description here

0
votes

In the end, I couldn't figure out what was going wrong. What I've done is created a static page named Home, made a custom template for it in page-home.php, and redirected index.php to the Home page's URL like so:

<meta HTTP-EQUIV="REFRESH" content="0; url=<?php bloginfo('url'); ?>/home/">

It's not ideal, but it works perfectly well.