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

Googleアドセンスの登録や設置方法
skeeze / Pixabay

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」が反映されます。

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

コメント

  1. しげぞう より:

    乃風様

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

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

  2. しげぞう より:

    乃風様

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

    <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つじっくりやってみる事をおすすめします。

  3. 乃風 より:

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

    それとですね、しげぞうさん・・・。アドセンス広告を非表示にする方法ですが、「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’ ) . ” ); ?>


  4. 乃風 より:

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

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

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

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

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

  5. しげぞう より:

    乃風様

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

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

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

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

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

  6. 乃風 より:

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

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

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

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

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

    よろしくお願いします。

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

タイトルとURLをコピーしました