ゆめぴょんの知恵ゆめぴょんの知恵
サイト制作、WordPressカスタマイズ、無料アプリ紹介など。海外旅行135ヶ国。知識を知恵にするブログ!

【WordPress】固定ページでpage.phpでなく投稿記事のsingleを共通利用する方法

singleで遊ぶ子猫-コネコ

このブログはWordPressというブログシステムで運用しています。テーマ(デザイン)を自作時に、固定ページのpage.phpを用意せずに投稿記事と同じsingle.phpを利用するよう設定しました。その方法を紹介します。

ゆめぴょん(@yume_pyon)です。こんちはっ!

昨年12月からこのブログのテーマを制作してきて、まだ完成とはいかないけど先週公開することができました。スマホ版も年始に公開済みです。次の記事を参考にしてください。

【WordPress】スマホサイト作成!テーマファイルの効率化【WordPress】スマホサイト作成!テーマファイルの効率化48 shares

WordPress用のスマホテーマを作成した時に配慮した、PC版とは違ったテーマ…

【WordPress】新テーマデザインで96点達成!SEO対策・軽量化など7つの特徴をさらします【WordPress】新テーマデザインで96点達成!SEO対策・軽量化など7つの特徴をさらします31 shares

このブログのPC・タブレットで表示されるデザインを大幅に変更しました。今回は新テ…

企業サイトなどの場合は「会社情報」「株主へ」など固定ページを多用するため、テンプレートも独自に作成した方がいいでしょう。しかし個人ブログでは固定ページは「サイトマップ」「プロフィール」くらいしか使ってないと思います。

固定ページには標準では「page.php」というテンプレートファイルを使っています。通常はそれでいいと思います。しかし自分でテーマ制作した時には、可能なら「single.php」を共通活用したいと思いました。

固定ページでpage.phpでなくsingle.phpを使うメリット

ひとことで言うと「複数ファイル管理が面倒だから」ということになるのですが、もう少し分解して理由を抜き出してみました。

  1. 制作するべきファイルが単純計算で半分になる
  2. 保守するべきファイルが半分になる
  3. 機能追加・修正する時に固定ページだけ置き去りにならない

ちなみに私はテーマ制作の最終テストの段階では、WordPressプラグイン「Theme Test Drive」を便利に活用しました。おすすめですよ。

【WordPress】Theme Test Driveプラグインでテーマ作成が捗る!テスト環境不要【WordPress】Theme Test Driveプラグインでテーマ作成が捗る!テスト環境不要

WordPressプラグイン「Theme Test Drive」を使えば、作成・…

テーマファイルの通常時の挙動

テンプレート(テーマファイル)は、ページの種類によって次のように優先順位が決められています。

  • ホーム:home.php > index.php
  • 投稿記事:single.php > index.php
  • 固定ページ:page.php > index.php
  • カテゴリ一覧:category.php > index.php
  • タグ一覧:tag.php > index.php
  • 年月日ページ:archive.php > index.php
  • 404エラー:404.php > index.php
  • 検索結果:search.php > index.php

上リストを見てもらえばわかるように、定められたテーマファイルがなければ、最終的には全てのテンプレートで「index.php」が利用されます。

固定ページも例外ではなく「page.php」が用意できてなければ「index.php」を使うことになります。

参考:テンプレート階層 – WordPress Codex 日本語版

しかし私は「index.php」を「ホーム」「カテゴリー」「タグ」「年月日」のページで利用していて、デザインも固定ページとは全く違うため別の方法を探しました。

固定ページで投稿記事の「single.php」を利用する方法

私のブログの「固定ページ」は「投稿記事」のデザインと共通でも違和感ないように作りました。他の方の個人ブログを見ても同じ傾向だと感じています。

だから「固定ページ」と「投稿記事」のテンプレートファイルを統合することにしました。「page.php」が存在すると優先されるため、サーバーのテーマフォルダから削除することを忘れずに。

「page.php」が存在しない状況で、テーマファイル「functions.php」に次の記述を書けば、固定ページでも「single.php」を読みに行きます。

「single.php」もなければ最終的には「index.php」を利用することになります。

ちなみにこのプログラムは、下のサイトを参考にさせていただきました。

参考:固定ページを投稿ページ用テンプレートファイル(single.php)で表示する:WordPress私的マニュアル

投稿記事だけや、固定ページだけに表示させる方法

「投稿記事」と「固定ページ」でテーマファイルを「single.php」に統合しても、それぞれでのみ表示したい内容はあると思います。

例えば私の場合は、カテゴリーに関する部分は投稿記事にだけ表示したいです。そもそも固定ページにはカテゴリー・タグを設定していません。

そんな時に便利な関数が、投稿記事だけ指定できる「is_single()」固定ページだけ指定できる「is_page()」です。

具体的には次のように使います。

この関数を使えば、カテゴリーへのリンクを投稿記事にのみ表示できます。ただしあまり多用すると表示速度が遅くなるので、その場合は固定ページ専用の「page.php」を設置することをおすすめします。

まとめ:今日のゆめぴょんの知恵

今回はちょっとマニアっくな内容だったかもしれません。ただネット上でもあまり見つからなかった方法(需要がないのかも(>_<))なので、これからWordPressテーマを制作する人に役立てばうれしいです。

スマホ版デザインテーマを制作した時の、高速化の記事もぜひ参考にしてみてください。

【Web制作】スマホサイトの高速化!pagespeedで93点達成の攻略方法【Web制作】スマホサイトの高速化!pagespeedで93点達成の攻略方法28 shares

スマホ用テーマデザインでサイト作成した時に実装した、表示の高速化に関するチップを…

次回の記事は「ウェブ制作に役立つチップ」の予定です(^^)。更新を見逃さないためにも、 feedlyの登録をおすすめします(^^)/

ゆめぴょん(@yume_pyon)でした。ばいちゃお! こてっZzz

«前記事:【WordPress】新テーマデザインで96点達成!SEO対策・軽量化など7つの特徴をさらします【WordPress】公開日と最終更新日の表示方法!リッチスニペットでSEO対策も:次記事»
ページ
↑先頭
ホーム