ページごとにテンプレートを使い分けるプラグイン「Single Post Template」の使い方

WordPressでページごとにテンプレートを使い分ける事ができるプラグイン「Custom Post Templates」を利用していたのですが、プラグインの検索で検索したら何か見当たらなくなっているので、代わりに「Single Post Template」の紹介をしておきます。機能的には同じなので問題無し。

一応公式テーマTwentyTwelveの子テーマ(child)を利用しているという想定で説明しますが、テーマによっては違う部分も出てくるかもしれないので注意。

前回の記事でも書いたようにアドセンス広告の配信停止をされたので違反と指摘されたページに関してはアドセンス広告を入れないテンプレートを利用する事にしました。
アドセンス配信停止から復活とその対処

違反しているページだけアドセンス広告は表示しないで他のページではアドセンス広告を利用する感じの対処をしました。つまり「アドセンス有りのテンプレート」と「アドセンス無しのテンプレート」2種類を使い分ける事でアドセンスの配信停止を解除できました。

という訳で今回はWordPressの「Single Post Template」というプラグインの使い方を紹介してみます。念のため、バックアップは必ずとっておき、間違えてもすぐに元に戻せるようにしておきましょう。

Single Post Templateの設定と使い方

その前にWordPressの基本構造をちょっと説明しておきます。例えば個別記事のテンプレートは「single.php」です。その「single.php」を開いて中身を見ると大体この3つの記述があるハズです。

これは上から順番に説明すると

  • 「ヘッダー (header.php)」を読み込む
  • 「サイドバー(sidebar.php)」を読み込む
  • 「フッター(footer.php)」を読み込む

という記述ですね。今回はヘッダーはこのままにしておいて、個別記事のテンプレートとサイドバーを新しく別に作って追加しようという作戦です。

まずは別テンプレートを使うために必要な物を用意していきます。今回用意したのは3点。

  • プラグイン「Single Post Template」
  • 個別ページのテンプレート「single-2.php」
  • 別テンプレート用のサイドバー「sidebar-2.php」

それでは1つ1つやり方を説明して行きます。

「Single Post Template」のインストールと有効化

WordPressは固定ページはそれぞれ別のテンプレートを選択できますが、個別記事にその機能はありません。今回紹介するプラグイン「Single Post Template」を利用する事で個別ページでも別テンプレートを使う事ができます。

WordPressの管理画面からプラグイン⇒新規追加で「Single Post Template」をインストールして有効化しておきます。これは有効化しておけば特に必要な設定はありません。

新テンプレート用の個別記事とサイドバーのphpの用意

これから作成する新テンプレートのために「single.php(個別記事)」と「sidebar.php(サイドバー)」の複製を作る作業をします。今回はロリポップを利用している場合の解説をしておきます。

ロリポップのユーザー専用ページから「WEBツール」⇒「ロリポップFTP」と進み、自分のWordPressのフォルダ⇒「wp-content」⇒「themes」と進む。それで自分の利用しているテーマを選択。

plugin-1

自分の利用しているテーマを選択したら(この場合はchild)、そのテーマフォルダの中に「新規ファイル」を作成。

plugin-2

新規ファイル名は「single-2.php」と名づけます。内容は後でいいのでとりあえず名前だけ書いて保存。

plugin-3

同じ要領で利用しているテーマ(この例の場合はchild)に「sidebar-2.php」というファイルも追加しておきます。内容は後で記述します。とりあえずロリポップでの作業はこれで終了。WordPressに戻って続きの作業をしましょう。

新テンプレートの「single-2.php」を編集する

WordPressの管理画面から⇒「外観」⇒「エディタ(テーマの編集)」を選択し、既存の単一記事の投稿(single.php)を開いて内容を全部コピーします。それで先ほど追加した「single-2.php」を開きsingle.phpでコピーした内容を貼り付け。

plugin-9

貼り付けできたら「single-2.php」に新テンプレートを反映させるための記述をします。「single-2.php」の「先頭」に次の記述をして下さい。

「新テンプレート」と書いている部分が新テンプレート名です。これは変更してもOK。

plugin-7

これでsingle.phpの複製ができたので、複製した「single-2.php」を必要に応じて修正します。今回はアドセンス無しのテンプレートにしたかったので、「single-2.php」からアドセンスの記述を削除しておきました。

それと複製した「single-2.php」には最後に次の記述があります。

これはサイドバーを呼び出すインクルードタグという物ですが、サイドバーもメインの物と違う物にしたい場合はこれをこのように変更します。

これでメインのサイドバーではなく、これから作成する新しいサイドバーを呼び出すようにしておきます。ちなみにこの部分を削除するとサイドバー無しのテンプレートになります。

新テンプレートの「sidebar-2.php」を編集する

新個別ページができたので同じ要領でサイドバー(sidebar.php)も複製しよう。WordPressの管理画面から⇒「外観」⇒「エディタ(テーマの編集)」を選択し、既存のサイドバー (sidebar.php)を開いて内容を全部コピーします。それで先ほど追加した「sidebar-2.php」を開きコピーした内容を貼り付け。

修正内容としては「sidebar-1」と書かれている部分を全て「sidebar-2」に書き換えたらOK。

plugin-4

これで個別ページ(single.php)の複製とサイドバー(sidebar.php)の複製と修正が完了。

新しいサイドバーの作成

ここで新しいサイドバーを作成するのでWordPressの管理画面から「外観」⇒「ウィジェット」を進みます。ウェイジェットには既存の「メインサイドバー」というのがありますが、その下に「フロントページウェジェットエリア」というのがあるので、それを開いて新しいテンプレートに利用したいウェイジェットを追加していきます。

テーマによっては「フロントページウェジェットエリア」という名前ではないかも。

plugin-5

plugin-6

以上でサイドバーの作成は終了。もしこの2つ目のサイドバーがない場合はfunctions.phpにサイドバー複数使うよって記述が必要なんですが、今回その説明は省略。

新テンプレートを作成

さて、これまでの設定で新テンプレートを作成できたので、確認してみる事にしましょう。WordPressで新規投稿または過去記事編集画面を開いたら記事作成画面の下に「Single Post Template」という部分があり、先ほど作成した「新テンプレート」というのがあるはずです。

plugin-8

この追加した新テンプレートを選択して「記事を公開」または「更新」を押すと新しいテンプレート、つまり先ほど作った「single-2.php」と「sidebar-2.php」が反映されます。

これでページ毎にテンプレートを切り替える事ができるようになります。

最終更新日:2016/02/25

ページごとにテンプレートを使い分けるプラグイン「Single Post Template」の使い方”に8件のコメントがあります。

コメントの反映には時間がかかる場合があります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

  1. しげぞう 投稿作成者

    乃風様

    返信ありがとうございます。header.phpには「もしスマホなら」という条件分岐がされているんだと思います。乃風様の言われるように「header-2.php」として作成して上手くいけば簡単なんですが、実はこの場合はちょっと違うんです。例えばsingel.phpとかのファイルを見ると「get_header()」というコードでheader.phpを呼び出している箇所がありますが、もう1つheader.phpを作成して「header-2.php」として呼び出そうとするとブログが上手く表示されません。

    この場合、singel.phpのファイルでheader.phpを呼び出している「get_header()」を含むコードを削除してその部分に直接header.phpの内容を追加する必要があるかな?と思います。私も以前試した事があるので。

    というわけなので、どうしてもという場合にはheader.phpのアドセンスは外してもいいかもしれません。どちらにしてもこの部分というのはほとんどクリックされません。

  2. 乃風

    退院した早々にあれこれメールをしてすみません。今、child の「header.php」へ行って、アドセンスコードを見てきたのですが、分岐が付いていたので、あれこれと考えてしまい、なんだかわからなくなってしまいました。お返事は急いでおりません。待っております。よろしくお願いします。