ページごとにテンプレートを使い分けるプラグイン「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つの記述があるハズです。

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

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

  • 「ヘッダー (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」の「先頭」に次の記述をして下さい。

<?php
/*
Single Post Template: 新テンプレート
*/
?>

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

plugin-7

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

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

<?php get_sidebar(); ?>

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

<?php get_sidebar("2"); ?>

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

新テンプレートの「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」が反映されます。

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

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

※入院生活から復活しました!!またできるだけ返信しますのでよろしくお願いします(^^)

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

  1. 乃風

    追伸・・・
    昨日から、AC写真が1日5回までの検索制限をかけはじめました。かなり使いづらくなりました。あと頼れるのは、Pixabayかなぁ~・・・って思いました。

  2. 乃風

    もう確認していただけたのですね。感激です! とても心強く思いました。
    ありがとうございました。

  3. しげぞう 投稿作成者

    乃風様

    返信ありがとうございます。私も確認しましたが、上手くいっていると思います。カテゴリーの件はサイドバーの表示だと思うのですが、おそらくCSSで調整はできるかもしれませんね。それと前回のアドセンスのコードの件ですが、ここのコメント欄は使えるタグと反映されないタグがあるのでちょっと一手間必要なんです。でもやりたい事は理解できるのでコードがなくても大体の場合は対処できます。

    また何かあればいつでもコメント下さい。

  4. 乃風

    おはようございます。なんとかうまくいきました。ありがとうございました。よかったら見に来てくださいね。

    「通販」を親にしてその中に「洋菓子」を入れたのですが、サイドバーのカテゴリーには「通販」と「洋菓子」が同等に同時に表示されてしまい、上手くいかなかったので、急きょ、「通販(洋菓子)」という形に変更しました。こんなことってあるんですね。

    それと、以前に画像の出典元の表記の仕方を教えていただきました。その節はありがとうございました。あれから記事の中に画像を入れていたことを思い出し、その場合、出典元を表記すると、どうも合わない感じがして、それで今は保留にしています。

    今後もどうぞよろしくお願いします。

  5. 乃風

    「どうしてもという場合にはheader.phpのアドセンスは外してもいいかもしれません」の一節に触れ、やっぱりそれでいいんだぁーって思いました。最後のコメントをここで配信した後に、実は私もその事に、ふと、気づいたんです、スマフォのヘッダーの広告を切り離す・・・ということに。

    わかりました。じゃ、それでいっています。(^^♪ ありがとうございました。

    余談ですが・・・。この間、「single.php」のアドセンス広告コードをコピペして、ここに張り付けて送信しましたが、反映されなかったとのことですが、私はそのコードの部分をカットしたり、そういったことは何も施していないので、送受信した段階で、そのコードが消えるようにアドセンス側が設定しているんでしょうかね? もしそうだとしたら、すごい技術だと思いました。

  6. しげぞう 投稿作成者

    乃風様

    返信ありがとうございます。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のアドセンスは外してもいいかもしれません。どちらにしてもこの部分というのはほとんどクリックされません。

  7. 乃風

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

  8. 乃風

    そういう事だったのですね。よくわかりました。

    今回、スイーツ(食品)のサイトを新しいカテゴリーで新規に立ち上げるつもりで準備してきました。アドセンスの規定に抵触する可能性があるので、スマフォのヘッダーのアドセンス広告も、今回合わせて表示させないテンプレートを作りたい。その手順を教えていただきたいのですが、よろしくお願します。

    追伸・・・
    「header.php」のコピペをロリポップで作って、それを「header-2.php」として登録し、それでアドセンスコードを削除するだけで出来るのでしょうか? それともそれプラスそれとは別に何かの設定も必要になるのでしょうか?

  9. しげぞう 投稿作成者

    乃風様

    コメントありがとうございます。スマホのヘッダー広告は表示されます。これは乃風様のサイトの場合、スマホでサイトを閲覧した場合だけ表示されます。これを削除する場合はheader.phpに挿入したアドセンスのコードを削除する必要があります。

    ただ、どのような目的でアドセンスを非表示にするのかによって対処は別れると思います。例えば何かの違反で広告の配信を停止されているのであればヘッダーも削除が必要かと思いますが、剃れ以外の理由であれば特にアドセンスを非表示にする必要もないかと思います。

  10. 乃風

    しげぞうさん、本当に本当にありがとうございました。うまくいきました。すごくうれしいです!

    あと、1つだけ疑問が残りました。でも、少しずつわかって来ています。アドセンス広告を全て非表示に切り替えた場合、スマフォのヘッダーに表示されているアドセンス広告だけは、構造上、非表示にする設定は必要ないんですよね? 多分、そういう事なんだろう・・・と、ようやくさっき気づいたんです。つまり、トップページの「続きを読む・・・」という青い文字をクリックすると、画面が切り替わって、スマフォのヘッダーのアドセンス広告は表示されなくなるからです。違います? 手元にスマフォがないため、確認できず、あれこれ考えてしまいました。すみません、ちっともわかってなくて。

  11. しげぞう 投稿作成者

    乃風様

    返信ありがとうございます。ちょっとコードがコメントにきちんと反映されてなくてあれなんですが、アドセンスのコード自体は以下のような感じになっていないでしょうか?

    <p class="ad-label">スポンサーリンク</p>
      
    <?php if (wp_is_mobile()) :?>
    <div class="ad-bottom-sm">
    ここにスマートフォン用サイズ(300x250)の広告
    </div>
      
    <?php else: ?>
      
    <div class="ad-bottom">
    ここにPC用の広告1つ目
    </div>
      
    <div class="ad-bottom">
    ここにPC用の広告2つ目
    </div>
      
    <?php endif; ?>

    このような部分があればこの部分がアドセンスのコードの部分です。もしこのような部分がない場合でも、とりあえず元の状態をコピーしておいてから削除して更新してみるのもありかと思います。ファイルの変更を保存し、記事を投稿一覧からテンプレートを変更したい記事を開き、編集したテンプレートに変更して確認をする必要があります。もし間違っても元のテンプレートに戻せばいいだけなので。

    ちょっとこのテンプレートの変更の部分はややこしい部分がありますので1つ1つじっくりやってみる事をおすすめします。

  12. 乃風

    「single-2.php」の内容をよく見て、それで、少しずつわかってきたのですが、スマフォのヘッダーのアドセンス広告を非表示にする方法は、ここでの作業、つまり「single-2.php」上での作業とは別の作業が必要になるのでしょうか?

  13. 乃風

    何度もすみません。さっきの「single-2.php」の事ですが、『 【広 告 (Advertisements)】 』からカットするのではなく、その直ぐ下にある『  』からアドセンス広告コード3つを超えたところにある『  』までを消去してファイルを更新しておけばいいという事なのでしょうか?

  14. 乃風

    しげぞうさん、お返事、ありがとうございました。コピー禁止の件、よくわかりました。私も止めておこうかなぁ~・・・という気持ちになりました。(^^♪。今、新しいカテゴリーで新しいサイトを着々と立ち上げているところなんです。一般公開したら、その時にまたコピー禁止の件、ご相談したい。よろしくお願いします。

    それとですね、しげぞうさん・・・。アドセンス広告を非表示にする方法ですが、「single.php」と「single-2.php」のうち、後者の方のアドセンス広告コードだけを削除すればいいんだと解釈しました。それで、「single-2.php」のアドセンス広告コードを探しに行ってきたのですが、ちょっと自信がありません。

    下記のは、「Child: single-2.php」のコピーですが、「【広 告 (Advertisements)】」から以下だとはわかるのですが、そこからどこまでを消去すればいいのでしょうか? 以下長くてすみません。よろしくお願いします。

    <a href="” itemprop=”url”>
    ホーム

    cat_ID; ?>

    parent; /* 上で取得したカテゴリーIDの親カテゴリーをセット */
    array_push($allcats, $catid);
    }
    array_pop($allcats);
    $allcats = array_reverse($allcats);
    ?>

    <a href="” itemprop=”url”>

    【広 告 (Advertisements)】

    (adsbygoogle = window.adsbygoogle || []).push({});

    (adsbygoogle = window.adsbygoogle || []).push({});

    (adsbygoogle = window.adsbygoogle || []).push({});

    <?php previous_post_link( '%link', '’ . _x( ‘←’, ‘Previous post link’, ‘twentytwelve’ ) . ‘ %title’ ); ?>
    <?php next_post_link( '%link', '%title ‘ . _x( ‘→’, ‘Next post link’, ‘twentytwelve’ ) . ” ); ?>


  15. しげぞう 投稿作成者

    乃風様

    早速の返信ありがとうございます。前回のコメントで「single-2.php」ファイルは追加しているという事でしたので、個別記事用のテンプレートが「single.php」と「single-2.php」の2種類あることになります。後は片方にアドセンスコード入り、もう片方にアドセンスの記述なしという状態にしてこれらを使い分ける感じになります。アドセンスのコード以外の記述は同じにしておけばアドセンス有りと無しを使い分ける事ができるかと思います。

    それからコピー禁止ですが、記事内の広告のコードのコピーであれば心配する必要はないです。アドセンス広告でも普通のASPであっても広告を掲載するサイトを登録しているはずですので他の方にコピーされても困る事はないかと思います。仮にコピー防止のために右クリック禁止などのプラグインを入れた場合にはユーザーからはちょっと使いにくいサイトになる可能性もありますので、その辺は考えておく必要があるかと思います。

    私の場合は画像にウォーターマークを入れるプラグインを一度使ってみたのですが、あまり好きではなかったので今では使ってません。本当が使った方がいいとは思うのですが(笑)

  16. 乃風

    お返事、ありがとうございます。

    1.子テーマに「sidebar.php」のファイルは用意しておいても大丈夫です。親テーマの記述をコピーして追加してみて下さい。
     → わかりました。では、「sidebar.php」は、既に用意して、親テーマの記述をコピーして   追加してしまったので、このままにしておきます。

    2.記事下のアドセンスを非表示にするという事だと思うのですが、アドセンスのコードを記述しているのは「single.php」でしょうか?それとも「content.php」でしょうか?
     
     →そうなんです。記事下のアドセンス広告縦2つを非表示にしたいんです。それと、SMのヘッダーのアドセンス広告も非表示にしたいんです。ページごとにテンプレートを使い分けるという意味ですが。今さっき確認してみたところ、アドセンスのコードを記述しているのは「single.php」の方でした。

    3.今回、アドセンス広告を非表示にする予定でいるテンプレートだけでいいので、自分のサイトの記事と記事内の広告をコピー禁止にする、一番簡単な方法があれば教えてください。ちなみにしげぞうさんは、コピー禁止の処置を取っておられますか? 

    以上です。よろしくお願いします。

  17. しげぞう 投稿作成者

    乃風様

    コメントありがとうございます。1つ1つ回答していきますね。

    1.子テーマに「sidebar.php」のファイルは用意しておいても大丈夫です。親テーマの記述をコピーして追加してみて下さい。

    2.記事下のアドセンスを非表示にするという事だと思うのですが、アドセンスのコードを記述しているのは「single.php」でしょうか?それとも「content.php」でしょうか?それを教えて頂けると助かります。よろしくお願いします。

    3.自分のサイトをコピー禁止にする方法はいくつかありますが、どれも完璧にコピー禁止にするのは難しいです。とりあえず簡易的な物であれば、右クリックを禁止するプラグインなどがあります。また画像のコピー禁止であれば画像にウォーターマーク(半透明の文字など自分の所有とわかる印)を入れるプラグインなどがあります。

    またわからない部分を再度コメント下さい。どうぞよろしくお願い致します。

  18. 乃風

    しげぞうさん、その後、ご体調はいかがですか?

    上記のやり方でやってみたのですが、3つわからない事があったので、教えてください。

    ①今回、ロリポップに行って、「single-2.php」のファイルを作って気づいたのですが、「sigle.php」と「sidebar-2.php」は、既にロリポップのchildの中にファイルがありました。ただ、「sidebar.php」のファイルだけがありませんでした。この「sidebar.php」ファイルも今回ついでにロリポップに作っておいたのですが、問題ないでしょうか?

    ②上記のやり方で、PCのサイドバーのトップに設置していたアドセンス広告(1つ)を表示させないようにはできたのですが、PCとタブレット用の記事下の縦2つのアドセンス広告と、そしてスマフォ用のヘッダー(1つ)、記事下(1つ)、サイドバーのアドセンス広告(1つ)も、全て表示させないようにするにはどうしたらいいのでしょうか?

    ③自分のサイトをコピー禁止にする一番いい方法があったら、教えてください。

    よろしくお願いします。

    「しげぞうさん、大丈夫かなぁ~・・・」と、時々、ふと、しげぞうさんを思う事があります。
    季節の変わり目だし、呉れ呉れもお大事に。

  19. ピンバック: 「サイトへの AdSense 広告配信が停止されています。」っていう警告にビビッて対策を考えてみた。 | アフィリエイト保育園