I'm wanting to set a single post as my homepage.

I have a photographer's site.

There are a few galleries (weddings, portraits etc). Each gallery is a wordpress post with attached images.

The post itself has no content apart from the attached images and I then use the wordpress [gallery] shortcode to display the attachments in a formatted manner.

My main menu include links to these single post "galleries".

This works well except I also want the home page to also be a gallery. I should add that the gallery posts are styled very differently to the static pages I also have (about, contact etc).

Basically I want to set the home page to be a single post. Now I realise this is not possible out of the box and so I need to take extra steps.

I suppose I need to create a page template that matches single.php and use that for the homepage?

I was wondering what the most elegant solution here might be.

2 Answers 2


Not sure if it is the most elegant way but the easiest is probably to create a shortcode that displays a single page, and then set that page to display as the front page.

e.g. http://wordpress.org/extend/plugins/post-content-shortcodes/


I believe your on the right track, my suggestion is to create a custom Paga Template like this for twenty ten:

Create a file "my_template.php" in your twenty ten themes folder (the file name is up to you)

Paste this into my_template.php:

<?php   /*
        Template Name: Gallery Homepage 

<?php get_header(); ?>

    <div id="container">
        <div id="content" role="main">

    <?php /* Display navigation to next/previous pages when applicable */ ?>
    <?php if ( $wp_query->max_num_pages > 1 ) : ?>
        <div id="nav-above" class="navigation">
            <div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">&larr;</span> Older posts', 'twentyten' ) ); ?></div>
            <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?></div>
        </div><!-- #nav-above -->
    <?php endif; ?>

    <?php /* If there are no posts to display, such as an empty archive page */ ?>
    <?php if ( ! have_posts() ) : ?>
        <div id="post-0" class="post error404 not-found">
            <h1 class="entry-title"><?php _e( 'Not Found', 'twentyten' ); ?></h1>
            <div class="entry-content">
                <p><?php _e( 'Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.', 'twentyten' ); ?></p>
                <?php get_search_form(); ?>
            </div><!-- .entry-content -->
        </div><!-- #post-0 -->
    <?php endif; ?>

        /* Start the Loop.
         * In Twenty Ten we use the same loop in multiple contexts.
         * It is broken into three main parts: when we're displaying
         * posts that are in the gallery category, when we're displaying
         * posts in the asides category, and finally all other posts.
         * Additionally, we sometimes check for whether we are on an
         * archive page, a search page, etc., allowing for small differences
         * in the loop on each template without actually duplicating
         * the rest of the loop that is shared.
         * Without further ado, the loop:
         */ ?>
    <?php while ( have_posts() ) : the_post(); ?>

    <?php /* How to display posts of the Gallery format. The gallery category is the old way. */ ?>

        <?php if ( ( function_exists( 'get_post_format' ) && 'gallery' == get_post_format( $post->ID ) ) || in_category( _x( 'gallery', 'gallery category slug', 'twentyten' ) ) ) : ?>
            <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <h2 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h2>

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

                <div class="entry-content">
    <?php if ( post_password_required() ) : ?>
                    <?php the_content(); ?>
    <?php else : ?>
                        $images = get_children( array( 'post_parent' => $post->ID, 'post_type' => 'attachment', 'post_mime_type' => 'image', 'orderby' => 'menu_order', 'order' => 'ASC', 'numberposts' => 999 ) );
                        if ( $images ) :
                            $total_images = count( $images );
                            $image = array_shift( $images );
                            $image_img_tag = wp_get_attachment_image( $image->ID, 'thumbnail' );
                            <div class="gallery-thumb">
                                <a class="size-thumbnail" href="<?php the_permalink(); ?>"><?php echo $image_img_tag; ?></a>
                            </div><!-- .gallery-thumb -->
                            <p><em><?php printf( _n( 'This gallery contains <a %1$s>%2$s photo</a>.', 'This gallery contains <a %1$s>%2$s photos</a>.', $total_images, 'twentyten' ),
                                    'href="' . get_permalink() . '" title="' . sprintf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ) . '" rel="bookmark"',
                                    number_format_i18n( $total_images )
                                ); ?></em></p>
                    <?php endif; ?>
                            <?php the_excerpt(); ?>
    <?php endif; ?>
                </div><!-- .entry-content -->

                <div class="entry-utility">
                <?php if ( function_exists( 'get_post_format' ) && 'gallery' == get_post_format( $post->ID ) ) : ?>
                    <a href="<?php echo get_post_format_link( 'gallery' ); ?>" title="<?php esc_attr_e( 'View Galleries', 'twentyten' ); ?>"><?php _e( 'More Galleries', 'twentyten' ); ?></a>
                    <span class="meta-sep">|</span>
                <?php elseif ( in_category( _x( 'gallery', 'gallery category slug', 'twentyten' ) ) ) : ?>
                    <a href="<?php echo get_term_link( _x( 'gallery', 'gallery category slug', 'twentyten' ), 'category' ); ?>" title="<?php esc_attr_e( 'View posts in the Gallery category', 'twentyten' ); ?>"><?php _e( 'More Galleries', 'twentyten' ); ?></a>
                    <span class="meta-sep">|</span>
                <?php endif; ?>
                    <span class="comments-link"><?php comments_popup_link( __( 'Leave a comment', 'twentyten' ), __( '1 Comment', 'twentyten' ), __( '% Comments', 'twentyten' ) ); ?></span>
                    <?php edit_post_link( __( 'Edit', 'twentyten' ), '<span class="meta-sep">|</span> <span class="edit-link">', '</span>' ); ?>
                </div><!-- .entry-utility -->
            </div><!-- #post-## -->
    <?php endif; ?>
<?php endwhile; // End the loop. Whew. ?>

        </div><!-- #content -->
    </div><!-- #container -->

Save this file and go to your wordpress admin site.

Then create a new page, write a heading, DO NOT fill out anything else in the edit box.

Then (IMPORTANT) on the right sidebar menubox named "Page Attributes" chose the page template "Gallery Homepage" (if you cant see this menubox you need to activate it through the screen options tab at the top of the page).

Go to you options and select you gallery homepage to your default homepage :)

Is this does not work, give me some feedback and more information about the theme you are using.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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