過去に、query_postsを使って試行錯誤して固定ページに記事一覧を表示させる記事を書いたのですが、もっと簡単にできる方法を教えて頂いたのでシェアさせて頂きます!ありがとうございますー!。・゚・(ノД`)・゚・。
ここまでの流れ
query_postsで固定ページに一覧表示していた
昨年、こんな記事を書きました。
こんな構造のサイトを作りたくて、blog.phpという固定ページをブログのトップにしたいんだよーと。
で、試行錯誤して書いたのがこれなんです。
query_postsは非推奨…!?
それが、冒頭に追記させて頂いていたようにquery_postsが非推奨である、という記事を拝見してこれ、ダメなんじゃないかと…。
ここで、私は非推奨=使っちゃダメ!なんだと思ってしまい、焦って「ヤバい!あんな間違った記事晒してたらヤバい!」とわたわたしてしまったのですが、
@ateitexe 今後はおすすめの方法ではなくなるというだけで、使っちゃダメってわけじゃないですよ〜
— Takuro Hishikawa (@HissyNC) March 25, 2013
…というものなのですね…!Hishikawaさん(@HissyNC)、今村さん(@s56bouya)、大変失礼致しました…!優しく接してくださってありがとうございます…!!
もっと簡単な方法が…!
そして私のトラックバックから、Hishikawaさんがこのような記事を書いてくださいました。
WP_Queryで記事一覧を取得する方法を紹介して頂きました。こんなふうに書けばいいのかー!と感動していたら、その後半、@jim0912さんの発言が。普通に、管理画面の設定からできるみたいです。知らなかった…なんてことなの…
方法
まず、投稿ページ用とトップページ用のふたつの固定ページを用意して、
管理ページから、設定→表示設定。
ここで、フロントページと投稿ページをさっきつくった固定ページに設定します。
当初、blog.phpなどのファイルを用意して、ページテンプレートの設定に…としていたのですが、また教えて頂きました。
@andante0727 @ateitexe ページテンプレートの設定もいらないですよ。フロントページの表示設定を行った場合は、トップページがfront-page.php、投稿ページが home.php で表示できます。
— S@pre_get_posts促進委員会さん (@jim0912) 2013年3月26日
つまり、上記の設定をすればこのように使えるようになるということですね…!ありがとうございますー!。・゚・(ノД`)・゚・。
front-page.phpとhome.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を使った方法も、とても勉強になります。本当に、皆様、ありがとうございました!
コメントを残す