¿Cómo mostrar los últimos 3 posts (publicaciones recientes) en una página estática?
Me gustaría implementar algo como "publicaciones recientes" en una página estática:
http://themes.codehunk.me/insignio/ (en el pie de página)
¿Cómo podría hacer esto sin usar un widget?

Normalmente uso este enfoque:
enfoque incorrecto
<?php query_posts( array(
'category_name' => 'noticias',
'posts_per_page' => 3,
)); ?>
<?php if( have_posts() ): while ( have_posts() ) : the_post(); ?>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php else : ?>
<p><?php __('No hay noticias'); ?></p>
<?php endif; ?>
Con la ayuda de @swissspidy la forma correcta es esta:
<?php
// la consulta
$the_query = new WP_Query( array(
'category_name' => 'noticias',
'posts_per_page' => 3,
));
?>
<?php if ( $the_query->have_posts() ) : ?>
<?php while ( $the_query->have_posts() ) : $the_query->the_post(); ?>
<?php the_title(); ?>
<?php the_excerpt(); ?>
<?php endwhile; ?>
<?php wp_reset_postdata(); ?>
<?php else : ?>
<p><?php __('No hay noticias'); ?></p>
<?php endif; ?>
Consulta @codex para más información.

Me gusta hacer referencia a http://wordpress.stackexchange.com/a/1755/12404 para mostrar por qué usar query_posts()
es casi siempre una mala idea.

Depende de lo que estés buscando. Si quieres hacer una "página de entradas" — en otras palabras, crear un nuevo archivo de plantilla de página — puedes crear un bucle secundario en esa página.
El codex tiene un ejemplo de esto y aquí hay otro ejemplo muy simplificado.
<?php
/*
Template Name: Página de Entradas
*/
get_header();
?>
<?php while( have_posts() ): the_post(); /* iniciar bucle principal */ ?>
<h1><?php the_title(); ?></h1>
<?php
/* Iniciar Bucle Secundario */
$other_posts = new WP_Query( /*quizás algunos argumentos aquí? */ );
while( $others_posts->have_posts() ): $other_posts->the_post();
?>
Puedes hacer cualquier cosa que harías en el bucle principal aquí y se aplicará
a las entradas del bucle secundario
<?php
endwhile; /* finalizar bucle secundario */
wp_reset_postdata(); /* Restaurar la página consultada original a la variable $post */
?>
<?php endwhile; /* Finalizar el bucle principal */ ?>
Si buscas algo que puedas insertar en cualquier página, la mejor solución sería un shortcode. Necesitarías crear un shortcode que obtenga varias entradas y las devuelva en una lista (o lo que desees). Un ejemplo:
<?php
add_action( 'init', 'wpse36453_register_shortcode' );
/**
* Registra el shortcode con add_shortcode para que WP lo reconozca.
*/
function wpse36453_register_shortcode()
{
add_shortcode( 'wpse36453_posts', 'wpse36453_shortcode_cb' );
}
/**
* La función de callback para el shortcode. Devuelve nuestra lista de entradas.
*/
function wpse36453_shortcode_cb( $args )
{
// obtener las entradas
$posts = get_posts(
array(
'numberposts' => 3
)
);
// ¿No hay entradas? ¡salir!
if( empty( $posts ) ) return '';
/**
* Recorrer cada entrada, obteniendo lo que necesitamos y añadiéndolo a
* la variable que enviaremos
*/
$out = '<ul>';
foreach( $posts as $post )
{
$out .= sprintf(
'<li><a href="%s" title="%s">%s</a></li>',
get_permalink( $post ),
esc_attr( $post->post_title ),
esc_html( $post->post_title )
);
}
$out .= '</ul>';
return $out;
}

El primer ejemplo puede ir en cualquier parte de tu tema. El segundo ejemplo, el del shortcode, debería ir en functions.php

Existe una guía para este caso preciso en el código de WordPress. Consúltala aquí: Pego el código aquí porque es bastante corto, para más información visita el sitio wordpress.org.
<?php
$args = array( 'numberposts' => 10, 'order'=> 'ASC', 'orderby' => 'title' );
$postslist = get_posts( $args );
foreach ($postslist as $post) : setup_postdata($post); ?>
<div>
<?php the_date(); ?>
<br />
<?php the_title(); ?>
<?php the_excerpt(); ?>
</div>
<?php endforeach; ?>

WordPress proporciona una función para ese tipo de solicitud: query_posts().
query_posts() es la forma más fácil de alterar la consulta predeterminada que WordPress utiliza para mostrar publicaciones. Usa query_posts() para mostrar publicaciones diferentes a las que normalmente aparecerían en una URL específica.
Por ejemplo, en la página de inicio, normalmente verías las últimas 10 publicaciones. Si deseas mostrar solo 5 publicaciones (y no te importa la paginación), puedes usar query_posts() así:
query_posts( 'posts_per_page=5' );
Una vez que hayas realizado la consulta, puedes mostrar las publicaciones de la forma que desees.

<?php $the_query = new WP_Query( 'posts_per_page=3' );
// Consulta para obtener los últimos 3 posts
while ($the_query -> have_posts()) : $the_query -> the_post();?>
<?php /* código HTML aquí etc */ the_title(); // Muestra el título del post ?>
<?php endwhile; wp_reset_postdata(); // Finaliza el loop y restablece los datos del post ?>
