2012
9
18

[WordPress]固定ページで記事一覧を表示するために行き詰まったあれこれ

仕事でWordPressを使ったサイトを構築して、home.phpをサイト全体のトップページにして、blog.phpという固定ページをブログのトップにしたいなーと思って、行き詰まったり解決したりしたまとめです。同じようなことしてる方はいっぱいいると思うんですが、メモをかねて。


2013/3/25追記

このエントリはquery_postsを使った方法を紹介しています。

その後こちらの記事を拝見し、非推奨な書き方をしていたことに気がつきまして、ご迷惑をおかけして非常に申し訳ありません。これもきっとpre_get_postsで出来るんだ!とがんばってみたのですが、固定ページのループへの作用のさせ方がわからず…。

どなたか、参考になる記事などご存知でしたら教えていただけると嬉しいです。なにとぞ、宜しくお願い致します。

更に追記:解決策を教えて頂きました!

WP_Queryで記事一覧を取得する方法の他に、管理画面の設定から簡単にできるという事実…!こっちのほうが断然お勧めです!

それでは以下、こんな書き方もできますよということで、一応残しておきます。

WordPressで普通の構造のWebサイトを作りたい

120918-1

サイトのアドレスがsample.comという名前だとして、その直下にWordPressをインストールすると、普通ならindex.phpがトップページになります。home.phpが存在する場合はそちらが優先されてトップページとして表示されるので、その性質を利用します。

で、普通のブログならば記事一覧のループをindex.phpに書いていたのを、blog.phpという名前(スラッグ)の固定ページを作ってその役割を担ってもらおうという、そういう考えです。

サイトトップに新着記事を表示

表示したい場所にこんな感じで書きます。

home.php

ブログのトップ(記事一覧)ページをつくる

120918-2

超簡単に、このような構造だとします。まずは普通のブログのように、index.phpにメインループを書いてみます。

index.phpをトップで使わない場合でも、カテゴリーやアーカイブページではindex.phpを使うことになるので、どのみち必要になります。まずはここからつくりましょう。

index.php

こんな感じになりますね。sideber.phpは、レイアウト上は左にありますが、SEO的にコンテンツが先にきたほうが良いのでCSSで順番を入れ替えます。さて、じゃあこれをコピーしてblog.phpって名前にすればいいのかな!

index.phpをコピーして、blog.phpっていう名前にして、冒頭に

って名前をつけて。

120918-3

「blog」っていうスラッグの固定ページを新規でつくって、ページのテンプレートをさっきつくったblog.phpにして。おー、思ったより簡単じゃーん!

…と、思いきや、表示されない…orz 「blog」っていう名前でつくった固定ページが何故かひとつだけ出てくるのみ。なんでー!!

固定ページへのループはそのままじゃダメ

いろいろ調べた結果、どうやらquery_post()というテンプレートタグを使うと出来るみたいです。メインループを詳細にカスタマイズできたりするもので、1ページに1回しか使えないなど制約があるようです。詳しくはコーデックを。

blog.php

こんな感じで、投稿記事のみという指定をして、query_postsをループの直前に書いたら、表示されたー!!

2012/9/24追記:8行目を修正しました!

当初、query_posts('post_type=post');と書いていたんですが、そのままだと記事が増えてページングが必要になった際、同じ記事が表示されるという不具合に遭遇しました。query_posts()を使用の際は、ページ番号が入っていないと、常に1ページ目を取得しようとしてしまうらしいので、'paged='.$pagedも書かねばならないようです。

条件分岐ができなくなった

表示されてウキウキしながら作業をしてたら、あれ…is_single()とかの条件分岐が…効かない!?なんでー!!ということで、またもググったところ、query_postsを変更してしまうと、条件分岐は使えないとのこと。

そうだったのか…。query_postsを変更したらリセットするのを忘れてはいけないようです。

blog.php

こういうことかー!!!

query_postsを変更している以上、ループの中は条件分岐は使えませんが、リセットすることで外では使えるようになりました!

moreタグが効いてない

さて、これで、OK…と思ったら、記事の「続きを読む」がない…?全文表示されてる!先生ー!Googleせんせー!!

MANAさんマジ女神!!ありがとうございます!!!

ようやく形になりました

行き詰まってググるの繰り返しだったので、まとめてみました。どなたかのお役に立てたら嬉しいです!

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

公開日:2012/09/18
更新日:2014/02/24


8件のコメント

  • Satoshi
    2013年2月19日 5:16 PM

    固定ページでブログ一覧を表示させるのに手間取っていたので、助かりました。
    ありがとうございます!

    • *you
      2013年2月19日 5:35 PM

      Satoshiさんコメントありがとうございます。
      お役にたてて光栄ですー!

  • toyomachi
    2014年3月10日 12:38 AM

    本気でドツボにハマっていました。
    シンプルで分かりやすい説明に助けていただきました。
    やっと寝れる(笑)。。ありがとうございます!

    • *you
      2014年3月10日 10:14 AM

      toyomachiさん、コメントありがとうございます!
      睡眠時間確保に貢献できて光栄であります(*`・ω・)ゞ

  • Yousan
    2014年12月9日 7:40 PM

    あざっす助かりました。

    • *you
      2014年12月10日 1:35 PM

      Yousanさん、コメントありがとうございます。お役に立てて嬉しいです!

  • 2020mirai
    2016年4月4日 1:43 PM

    随分時間をかけて悩みましたが、この記事のお陰で解決できました。大変助かりました。ありがとうございました。

    • *you
      2016年4月7日 10:36 PM

      2020miraiさん、コメントありがとうございます。結構前の記事なのに未だに誰かのお役に立てるとは嬉しい限りです(´∀`*)

3件のトラックバック

コメントを残す




*印は必須項目です。コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にですがスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)


back to top