【2016/7/7追記】
現在当ブログでは「AdRotate」というプラグインで広告を管理している為、下記の方法は使用していません。
プラグインの制限等ある方にもしかしたら需要があるかもしれないので残しておきます。

カテゴリ毎に広告を変更できたらいいなぁ
Amazonのアソシエイトではユーザのオススメしたい商品を広告として表示することができます。
なかでもくるくるウィジェットは見た目にも楽しいです。
ある単一のカテゴリを扱っているブログの場合は問題ないですが、うちのように何種類かカテゴリがあるブログを運営している場合はカテゴリ毎に広告を変更できればなぁと思うこともあるでしょう。
自動車についてのブログなのに広告が猫グッズだったりすると(よほどの信念が無い場合)意味不明ですよね。
そこで今回はカテゴリ毎に広告を変更する方法を2パターン提案します。
1.Quick Adsenseを使用する
注)この方法は手動で変える方法なので面倒です
プラグインの一つ、Quick Adsenseを使用します。使用する広告がAdsense以外でも問題ありません。
- プラグインもの新規追加からQuick Adsenseを追加する。
- WordPressのダッシュボードから「設定」→「Quick Adsense」をクリックする
- 下記の設定をする
1画面目。
特に設定することはないですが、強いて言えば「Position」の部分にチェックが入っていないことを確認します。
2画面目。
赤枠で囲ってある「Show Wuicktag Buttons on the HTML Edit Post SubPanel」にチェックを入れます。
これはWordPress投稿画面の「テキスト」タブで使用できるタグを表示するかどうかの設定です。
こんな感じで表示されます。
Ads1はQuick AdsenseのAds1に記述された広告を表示します。
必要なカテゴリ数だけ、Ads1から広告のHTMLをコピペしていきます。
HTMLを記述することができるので、複数の広告をひとつのAdsに詰め込めます。
こうすることにより、とあるカテゴリの記事を書いた後に該当する「Ads○」を文末でクリックすればカテゴリ毎に違う広告を挿入することができます。
Quick Adsenseの別の使い方?
HTMLを記述することができますが、広告である必要すらありません。
何か決まった文言を入れたいけどコピペは面倒だな・・・って時にメールで言う「署名」的に使うこともできます。
ボタン自体は「Ads1」としか表示されないので、どこに何を書いたかは覚える必要があります。
「HTMLが記述できるのであればPHPで条件分けすればいいんじゃないの?」
そう思ってやって見ましたが、Quick AdsenseではPHPは処理してくれないようです。たぶん。
もちろん手作業でも良いよと言う人もいるでしょうが、私は一回この方式で全記事修正したのですがもうやりたくありません。
できれば記事を書くのに集中し、広告は自動的に挿入されるのが理想です。
ではどうやるか。
直接WordPressのPHPを修正し、「このカテゴリであればこの広告を表示する」という指示を出します。
2.PHPで自動的にカテゴリ毎に広告表示をする
まず、個別ページがどのように処理されるか確認します。
WordPressのテンプレート階層を確認すると、
- category-{slug}.php
- category-{id}.php
- category.php
- archive.php
- index.php
となっています。
テーマによって違うと思われますが、1.または2.のPHPを修正します。
ちなみにここで使われているテーマ「Spacious」では1.または2.にあたるファイルは「content-single.php」です。
「category.php」の記述をよくみればどのファイルを読み込んでいるかわかると思います。
下記に「Spacious」で個別ページを成形している「content-single.php」の全文を載せますので参考にしてください。
<?php
/**
* The template used for displaying page content in page.php
*
* @package ThemeGrill
* @subpackage Spacious
* @since Spacious 1.0
*/
?><article id=”post-<?php the_ID(); ?>” <?php post_class(); ?>>
<?php do_action( ‘spacious_before_post_content’ ); ?>
<div class=”entry-content clearfix”>
<?php
the_content();
?><!– 追加ここから –>
<hr><div align=center>-スポンサードリンク-
<?php if(in_category(array(カテゴリのID))){ ?>
<!– 広告1 –>
<広告1のHTMLコード><!– 広告2 –>
<? }elseif(in_category(array(カテゴリのID))){ ?>
<広告2のHTMLコード><!– 広告3 –>
<? }elseif(in_category(array(カテゴリのID))){ ?>
<広告3のHTMLコード><!– 広告4 –>
<? }elseif(in_category(array(カテゴリのID))){ ?>
<広告4のHTMLコード>
<?php } ?><br><hr>
</div>
<!– 追加ここまで –><?php
$spacious_tag_list = get_the_tag_list( ”, ‘ ’, ” );if( !empty( $spacious_tag_list ) ) {
?>
<div class=”tags”>
<?php
_e( ‘Tagged on: ‘, ‘spacious’ ); echo $spacious_tag_list;
?>
</div>
<?php
}wp_link_pages( array(
‘before’ => ‘<div style=”clear: both;”></div><div class=”pagination clearfix”>’.__( ‘Pages:’, ‘spacious’ ),
‘after’ => ‘</div>’,
‘link_before’ => ‘<span>’,
‘link_after’ => ‘</span>’
) );
?>
<?php spacious_entry_meta(); ?><?php
do_action( ‘spacious_after_post_content’ );
?>
</article>
ちなみにカテゴリのIDは複数指定できます。
その場合は「array(1,2,3)」のようにカンマで区切ってください。
挿入する目安としては、
<?php
the_content();
?>
の後になると上手くいくと思います。
ちなみに「the_content」は記事の本文を呼び出す関数です。
ファイル検索で「the_content」を検索しても良いですね。
まとめ
私はどちらもやりましたが、やはり可能であれば自動的にやってくれる後者の方が良いですね。
最初は改造なんてできないかと思われましたがやってみるとなんとかなるものです。
でもバックアップは忘れずに。