解放区在住氷翠 緑の閃光

index.php【WordPress】

2016-02-20 14:48

基本的にトップページと考えると楽だろう。

その中ではコンテンツを考えていくことになる。
ヘッダーやフッター、サイドバーなんてほかのファイルになっているので、まずはこれらを召喚呪文で呼び出さないといけません。

<?php get_header(); ?>

<!-- このあたりにメインコンテンツ -->

<?php get_sidebar(); ?>

<?php get_footer(); ?>

とりあえず、基本的なことです。
これだけindex.phpの中に記述するだけで表示されることでしょう。
上から「get_header()」は「header.php」
「get_sidebar()」は「sidebar.php」
「get_footer()」は「footer.php」をそれぞれ呼び出し表示します。

で、基本的にトップページといえば、投稿の一覧が表示されること。
じゃぁ、それはどうやるかというと、

<?php if ( have_posts() ) : ?>
<?php while ( have_posts() ) : the_post(); ?>

<h1><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h1>
<?php the_excerpt(); ?>
<p class="date"><a href="<?php the_permalink() ?>">続き</a>&nbsp;<?php the_date('Y-m-d'); ?>&nbsp;<?php the_time() ?></p>
<?php endwhile; ?>
<!--ページャー-->
<div class="pager">
<?php global $wp_rewrite; $paginate_base = get_pagenum_link(1); if(strpos($paginate_base, '?') || ! $wp_rewrite->using_permalinks()){
    $paginate_format = '';
    $paginate_base = add_query_arg('paged','%#%');
}
else{
    $paginate_format = (substr($paginate_base,-1,1) == '/' ? '' : '/') .
    user_trailingslashit('page/%#%/','paged');;
    $paginate_base .= '%_%';
}
echo paginate_links(array(
    'base' => $paginate_base,
    'format' => $paginate_format,
    'total' => $wp_query->max_num_pages,
    'mid_size' => 5,
    'current' => ($paged ? $paged : 1),
    'prev_text' => '«',
    'next_text' => '»',
)); ?>
<?php else : ?>
<p>投稿が一つもありません</p>
<?php endif; ?>

アレンジは自分で。。。
まずは「have_posts()」から。記事があるかどうかをチェックするという関数。あればループさせることができます。ただし、ループ内でこの関数を呼び出してしまうと、永久ループが発生するので、十分気を付けなくてはいけません。
また、その横にある「the_post」は次のデータを取得するためのものです。
「the_permalink()」はその記事に対するURL、「the_title()」はその記事のタイトルをそれぞれ出力します。「the_excerpt()」は記事の内容ですが、特定の文字数を超えているものは、「…」で表現されます。「the_date()」は投稿日で、引数としてそのフォーマットを入れておきます。「the_time()」は投稿した時間を出力します。
また、その下にあるページャーですが、これは参考させていただいたサイトから持ってきたものです。
一番わかりやすくて使い勝手も非常によかったので、このまま使用しています。あとはCSSでなんとかなるでしょうからw