you can do it a few ways.
First is probably just to have a custom index.php.
Most usually have something like this:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<!-- do some stuff for post formatting, comments, etc -->
<?php endwhile; ?>
<?php else : ?>
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.
<?php endif; ?>
what you need to do to take out the “while” loop. So change to something like:
<?php if (have_posts()) : ?>
<?php the_post(); ?>
<!-- do some stuff for post formatting, comments, etc -->
<?php else : ?>
<h2 class="center">Not Found</h2>
<p class="center">Sorry, but you are looking for something that isn't here.
<?php endif; ?>
That should basically make only 1 post on the front page.
Another way to do it is to do something in a custom loop outside of the main loop – something like this:
<?php $my_query = new WP_Query('showposts=1'); ?>
<?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
<!-- Do your formatting... -->
<?php endwhile; ?>
Either way would work.