2013
3
26
WordPressで固定ページをブログのトップとして記事を一覧表示する方法

過去に、query_postsを使って試行錯誤して固定ページに記事一覧を表示させる記事を書いたのですが、もっと簡単にできる方法を教えて頂いたのでシェアさせて頂きます!ありがとうございますー!。・゚・(ノД`)・゚・。


この記事をスマホで読む

ここまでの流れ

query_postsで固定ページに一覧表示していた

昨年、こんな記事を書きました。

サイト構造の図

こんな構造のサイトを作りたくて、blog.phpという固定ページをブログのトップにしたいんだよーと。

で、試行錯誤して書いたのがこれなんです。

query_postsは非推奨…!?

それが、冒頭に追記させて頂いていたようにquery_postsが非推奨である、という記事を拝見してこれ、ダメなんじゃないかと…。

ここで、私は非推奨=使っちゃダメ!なんだと思ってしまい、焦って「ヤバい!あんな間違った記事晒してたらヤバい!」とわたわたしてしまったのですが、

…というものなのですね…!Hishikawaさん(@HissyNC)、今村さん(@s56bouya)、大変失礼致しました…!優しく接してくださってありがとうございます…!!

もっと簡単な方法が…!

そして私のトラックバックから、Hishikawaさんがこのような記事を書いてくださいました。

WP_Queryで記事一覧を取得する方法を紹介して頂きました。こんなふうに書けばいいのかー!と感動していたら、その後半、@jim0912さんの発言が。普通に、管理画面の設定からできるみたいです。知らなかった…なんてことなの…

方法

まず、投稿ページ用とトップページ用のふたつの固定ページを用意して、

表示設定

管理ページから、設定→表示設定。

表示設定

ここで、フロントページと投稿ページをさっきつくった固定ページに設定します。

当初、blog.phpなどのファイルを用意して、ページテンプレートの設定に…としていたのですが、また教えて頂きました。

イメージ

つまり、上記の設定をすればこのように使えるようになるということですね…!ありがとうございますー!。・゚・(ノД`)・゚・。

自作テーマなどでfront-page.phphome.phpが存在しない場合は、作成する必要があります。
<?php get_header(); ?>

<?php /* 略 */ ?>

<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <div class="post">
            <p><?php the_time("Y年m月j日") ?></p>
            <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
            <?php if(has_post_thumbnail()) { echo the_post_thumbnail(); } ?>
            <?php the_content('続きを読む'); ?>
        </div>
    <?php endwhile; ?>
<?php else : ?>
    <div class="post">
        <h2>記事が見つかりません</h2>
        <p>記事が存在しないときのテキスト</p>
    </div>
<?php endif; ?>

<?php /* 略 */ ?>

<?php get_sidebar(); ?>
<?php get_footer(); ?>

あとは普通のブログをつくるようにindex.phpに書くのと同じことをhome.phpに書けば良いのです!こんな、方法が、あったなんて…orz

ちなみに、この方法だとトップページへの条件分岐はis_home()ではなく、is_front_page()になりますね。

追記:トップに新着情報を表示

トップページ(front-page.php)にブログの新着情報を載せておきたい場合は、こんなふうに書くのが良いんじゃないでしょうか。

<ul>
	<?php
	global $post;
	$args = array( 'posts_per_page' => 5 );
	$myposts = get_posts( $args );
	foreach( $myposts as $post ) {
		setup_postdata($post);
		?>
		<li>
			<dl>
				<dt><?php the_time('Y.m.d') ?> 【<?php the_category('|') ?>】</dt>
				<dd><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></dd>
			</dl>
		</li>
		<?php
	}
	wp_reset_postdata();
	?>
</ul>

日付、カテゴリー、リンク付きのタイトルを5件取得します。

たくさんの方に助けて頂きました

今回、トラックバックという形から解決策を教えて頂き、本当にネットってすごいなぁと感じています。WP_Queryを使った方法も、とても勉強になります。本当に、皆様、ありがとうございました!

公開日:

  • RSSを登録
  • 302 follow us in feedly
  • このエントリーをはてなブックマークに追加



コメントを残す




*コメントは承認制ですので、反映までしばらくお待ち下さい。


back to top