WordPressで複数あるh2見出しタグに対して、3番目と5番目にどの広告を表示して、他は広告を表示しないといった、広告の表示・非表示と、どの広告を配信するかの設定を簡単にすることができる方法を紹介しています。
指定したh2タグの上に広告を表示する方法
結論からいうと、以下のコードをfunctions.phpに追記して、広告のタグを追加し、h2を表示する場所のtrue/falseを変更するだけで表示・非表示の切り替えができます。
// h2上広告表示
function show_ads_on_selected_h2($the_content) {
//広告番号1
$ad1 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
//広告番号2
$ad2 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
//広告番号3
$ad3 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
//広告番号4
$ad4 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
//広告番号5
$ad5 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
//広告なし(明示用)
$no_ad = "";
// 表示表示設定
$show_ads = [
[true, $ad1], //1つ目のh2タグの上
[false, $ad2], //2つ目のh2タグの上
[true, $ad3], //3つ目のh2タグの上
[false, $no_ad], //4つ目のh2タグの上
[true, $ad5] //5つ目のh2タグの上
];
if ( is_single() ) {
$h2 = '/^<h2.*?>.+?<\/h2>$/im';
if ( preg_match_all( $h2, $the_content, $h2s )) {
if ( $h2s[0] ) {
for ($i=0; $i <= 7; $i++){
if ( $h2s[0][$i] && $show_ads[$i][0] ) {
$the_content = str_replace($h2s[0][$i], $show_ads[$i][1].$h2s[0][$i], $the_content);
}
}
}
}
}
return $the_content;
}
add_filter('the_content','show_ads_on_selected_h2');
管理部分のコード
コードがとても長く拒絶反応がでるかもしれませんが、編集するのは以下の2か所のみで、ほとんどいじるところはないので安心してください。
- 広告タグの追加
- 広告表示・非表示と広告の設定
広告タグの追加
広告番号〇と書いてある、<!-- ここに広告のタグを記述 -->
に広告のタグを貼り付けてください。
//広告番号1
$ad1 = <<< EOT
<!-- ここに広告のタグを記述 -->
EOT;
$ad1 ~ $ad5までの変数を用意して、広告を5つ設定できるようにしています。
出し分けの管理をしたい広告があれば、$ad6や$ad7など、同じ書式で追加してください。
広告表示・非表示と広告の設定
広告表示・非表示と広告の設定は次のコードで管理します。
// 表示表示設定
$show_ads = [
[true, $ad1], //1つ目のh2タグの上
[false, $ad2], //2つ目のh2タグの上
[true, $ad3], //3つ目のh2タグの上
[false, $no_ad], //4つ目のh2タグの上
[true, $ad5] //5つ目のh2タグの上
];
上から順に、1つ目のh2タグの広告を表示・非表示のどちらにするかと、どの広告を表示するかを指定します。
配列の中は次のようになっています。
[<表示するかしないか>, <表示する広告>]
<表示するかしないか>の部分に、表示したければ true を、非表示にしたければ falseを入力します。
<表示する広告>の部分には、表示したい広告の変数を入力します。
広告を表示したくないh2があれば、変数$no_ad を指定しておけば、間違って広告が配信されてしまうことを防げます。
設定の例
例えば、$ad3で指定した広告を、1つ目と2つ目のh2で切り分けたい場合は、次のように記述します。
あとは、true, falseを切り替えればどちらに表示するかを選択できます。
[true, $ad3], //1つ目のh2タグの上
[false, $ad3], //2つ目のh2タグの上
Google AdSenseの場合(広告を自動で変えてくれる場合)
Google AdSenseの場合は自動で広告を出し分けてくれるので、1つのコードを入力すれば管理できます。
先ほどの、広告を代入した変数を1つにして、あとは、true, falseで切り替えれば、表示したいh2の上のみにAdSense広告を表示することができます。
// h2上広告表示
function show_ads_on_selected_h2($the_content) {
$ad = <<< EOT
<!-- AdSenseのタグを記述 -->
EOT;
//広告なし(明示用)
$no_ad = "";
// 表示表示設定
$show_ads = [
[true, $ad], //1つ目のh2タグの上
[false, $ad], //2つ目のh2タグの上
[true, $ad], //3つ目のh2タグの上
[false, $ad], //4つ目のh2タグの上
[true, $ad] //5つ目のh2タグの上
];
if ( is_single() ) {
$h2 = '/^<h2.*?>.+?<\/h2>$/im';
if ( preg_match_all( $h2, $the_content, $h2s )) {
if ( $h2s[0] ) {
for ($i=0; $i <= 7; $i++){
if ( $h2s[0][$i] && $show_ads[$i][0] ) {
$the_content = str_replace($h2s[0][$i], $show_ads[$i][1].$h2s[0][$i], $the_content);
}
}
}
}
}
return $the_content;
}
add_filter('the_content','show_ads_on_selected_h2');
参考
この内容は寝ログ(Cocoon開発者のわいひらさんが運用するブログ)のコードを参考にしています。
素晴らしいテーマを無料で配信していただいて心より感謝です。