WordPressの基本ループ

WordPressの基本ループは、

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
        <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
        <?php the_content(); ?>
    </div>
<?php endwhile; else: ?>
    <p>投稿がありません</p>
<?php endif; ?>

となる感じ。
投稿がないことはほとんどないので、else部分はいらないかも。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
    <div <?php post_class(); ?> id="post-<?php the_ID(); ?>">
        <h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
        <?php the_content(); ?>
    </div>
<?php endwhile; endif; ?>

この方がシンプルかな?

get_posts()について

query_posts()からget_posts()又はWP_Query()が推奨になって、非常に混同するようになったー。
自分の使い方では、get_posts()がメインになりそうなので、テンプレートをメモ

<?php $myposts = get_posts(【条件】); ?>
<?php foreach($myposts as $post) : setup_postdata($post); ?>
    <!-- 【内容】 -->
<?php endforeach; ?>

任意のページ情報取得では、スラッグ名を使って取得する場合が多いので、get_page_by_path()を使うけど、投稿の場合は自分で関数を用意する必要がありそうです。
function.phpに、

function get_post_id_by_slug($post_slug, $post_type) {
    $args = array(
        'name' => $post_slug,
        'post_type' => $post_type,
        'post_status' => 'publish',
        'posts_per_page' => 1
    );
    $my_post_array = get_posts($args);
    if( $my_post_array ) return $my_post_array[0]->ID;
    else return NULL;
}

を記述しておくとOK。