WordPressというか使っているテーマのカスタマイズでサイドバーの出し分け

WordPressというか使っているテーマのカスタマイズでサイドバーの出し分け

ポリシー違反にならない為に

先日、審査に無事合格し「Google AdSense」を導入させてもらった。しかしここで、ひとつ困ったことが発生した。

AdSense ヘルプの『広告の配置に関するポリシー』によれば、404エラーページなどにはAdSenseを設置できないのだ。

手続き完了ページ、離脱ページ、ログインページ、エラーページでの広告掲載

コンテンツを含まないページ(手続き完了ページ、離脱ページ、ログインページ、エラーページなど)に広告を掲載することは許可されません。(後略)

このサイトではWordPress+某テーマ(HTMLソースを見れば何を使ってるかは分かるけどw)で構築してるが、このテーマではそういった広告の表示・非表示の制御ができない事に気づく。

だからといって今更テーマを替えるのも面倒だし、ギミックに走り過ぎて特にCSSの基礎部分に詰めの甘さを感じる作りではあるが、見た目だけは気に入っているし、という事で「広告アリと広告ナシを出し分けすればいい」という解決策に直ぐにたどり着くのだが、肝心のそのやり方が分からないw

ところで、『広告の配置に関するポリシー』では「お問い合わせページ」については言及がなかったが、このページもAdSenseは外した方がいいだろうという判断で(李下に云々)、取り急ぎ固定ページ属性の「お問い合わせページ」と「404エラーページ」について、AdSenseが表示されないようにすべく色々と調べてみた。

以下、使用しているテーマのコードを晒す事はできないためザックリした感じになるが、誰かの参考になれば幸いである。

  • 環境&前提条件
    1. 問題になるのは、サイドバー部分に設置したAdSenseである。ヘッダーの広告はGoogle AdSenseの広告ではない。
    2. functions.phpで、サイドバーウィジェットに関連するカスタマイズが既に成されている。
    3. お問い合わせページは、固定ページの「page.php」から派生した問い合わせページ用のPHPファイル「page-otoiawase.php」がテーマ側で既に用意されている。
    4. 404エラーページは、テーマ側で既に「404.php」ファイルが用意されている。
  • 過程&目標
    1. できればスマートにいきたいけどw 方法は問わない。
    2. 最終的には「お問い合わせページ」と「404エラーページ」では、通常表示されるサイドバーの広告が出ないようにできれば問題ない。

作成の手順をざっくりと説明する

functions.phpの修正

まず、FTPクライアントソフトなどで、サーバ上のファイル一式をローカル環境にダウンロードしておく事。そして、使用しているテーマのディレクトリ(フォルダ)内にある「functions.php」をテキストエディタで開いて、サイドバーウィジェットに関する部分を見つける。原本となるfunctions.phpのバックアップは忘れずに!
※ここまでの説明が意味不明という事であれば、この作業自体を諦めた方がいい。

見つけたらサイドバーウィジェットを1つ追加する要領で、該当ブロックを丸ごとコピペする

    register_sidebar( array(
      'name'          => 'サイドバーコンテンツ',
      'id'            => 'sidebar',
      'description'   => 'サイドバーに表示するコンテンツエリアです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));

「▲これ▲」が「▼このよう▼」に1ブロックをそのまま増やした状態に。

    register_sidebar( array(
      'name'          => 'サイドバーコンテンツ',
      'id'            => 'sidebar',
      'description'   => 'サイドバーに表示するコンテンツエリアです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));
    register_sidebar( array(
      'name'          => 'サイドバーコンテンツ',
      'id'            => 'sidebar',
      'description'   => 'サイドバーに表示するコンテンツエリアです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));

次に、自分がコピペして増やした方の「サイドバーコンテンツ」の’name’、’id’、’description’を書き換えていく。’name’と’description’は英語でも日本語でお好きなように。管理画面を利用する人に向けての名前と説明なので、他と区別ができる文字列であればOK。

但し、’id’については「sidebar」と「-(半角ハイフン)」まではWordPressの仕様なので変更不可。その後に続く文字列は半角英字(半角数字も使えるかは不明。試してないのでw)。もちろん、この’id’が他と被るのはNG。
この’id’がキモ!

    register_sidebar( array(
      'name'          => '広告無サイドバーコンテンツ',
      'id'            => 'sidebar-noads',
      'description'   => 'エラーページなどで使用するサイドバーです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));

これで基となった「サイドバーコンテンツ」と、増やした方の「サイドバーコンテンツ」が以下の状態になっているはずだ。

    register_sidebar( array(
      'name'          => 'サイドバーコンテンツ',
      'id'            => 'sidebar',
      'description'   => 'サイドバーに表示するコンテンツエリアです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));
    register_sidebar( array(
      'name'          => '広告無サイドバーコンテンツ',
      'id'            => 'sidebar-noads',
      'description'   => 'エラーページなどで使用するサイドバーです',
      'before_widget' => '<aside class="widget-block">',
      'after_widget'  => '</aside>',
      'before_title'  => '<h2 class="widget-ttl">',
      'after_title'   => '</h2>',
    ));

尚、’id’で追加した文字列は、広告ナシの意味で「no-ads」としたかったが、「sidebar-no-ads」という表記だとうまく機能するかどうか分からなかったため「sidebar-noads」とした。書き換えが終わったら、保存したfunctions.phpをアップロードしてfunctions.phpを上書きする。

広告ナシのサイドバー作成

WordPressの管理画面から【外観】→【ウィジェット】とアクセスすると、元々あった《サイドバーコンテンツ》というウィジェットの下に、《広告無サイドバーコンテンツ》というウィジェットが追加されているだろう。もし無ければ、何かしら作業をミスってる。

追加された《広告無サイドバーコンテンツ》は、この時点では中身がカラなので、既存の《サイドバーコンテンツ》を参考に、広告を省いたサイドバーを作成する。

page-otoiawase.phpと404.phpの修正

《広告無サイドバーコンテンツ》が完成したら、先ほど修正したfunctions.phpと同一階層にある「page-otoiawase.php」、及び「404.php」を見つけてテキストエディタで開く。

開いた2つのファイルそれぞれで、下記の記述を見つける。

    <?php get_sidebar(); ?>

見つけたら、下記に書き換える。というか「’noads’」を括弧内に追記する。

    <?php get_sidebar('noads'); ?>

get_sidebar();に追加された「’noads’」というのは、先ほど「functions.php」で追加した《広告無サイドバーコンテンツ》部分の「’id’ => ‘sidebar-noads’,」における「-」より後の文字列の事。従って’id’を「’sidebar-hogehoge’」としているならば、書き換えは<?php get_sidebar(‘hogehoge’); ?>としなければならない。

変更を加えた2つのファイルを保存し、サーバにあるファイルをそれぞれのファイルで上書きしたらOK(もちろん、原本の方のバックアップは忘れずに)。お問い合わせページや404エラーページには、サイドバーの広告がもう表示されてないはずだ!

但しこのやり方では、テーマがアップデートされた時に追記・修正した箇所が元に戻る可能性が高く、お問い合わせページやエラーページに再度広告が表示される事になる。ご注意!