【WordPress】投稿者によって広告コードを振り分ける

カスタマイズ

記事をご覧の方へ

現在vivibit.netは旧システムからの移行に伴い修正作業を行っています。
表示上の問題や軽微なエラーが発生する可能性がありますが、ご利用に問題はありません。
また、現在一部ファイルのダウンロードができなくなっています。
順次対応予定ですが、お急ぎの場合や問題を発見された場合はコメント欄でご指摘いただけると助かります。


当ブログは複数人で思い思いに記事を更新します。
そこで、記事の投稿者によって GoogleAdSense の広告コードを自働で振り分けるようにしたので備忘録として書いておきます。

コピペですぐに使えて他の用途にも流用できます。

仕様

今回は動けば良いし3人分という事で、外部ファイルは使わずにphpファイル内に直接広告コードなどを書いていくことにしました。

判別後に広告コードを直接吐き出すのが一番シンプルで良いですが、色々流用が効きそうな点から、ユーザ毎に番号を振ってその番号を使って広告コードを振り分けることにしました。

番号を振る際は2人分比較してどちらにも一致しなかったら3人目ということにしました。

ユーザ毎に番号を振る

functions.php

functions.php の一番下にこれを放り込みます。

[js]
function get_usercode($name) {
if ($name == ‘ユーザの表示名A’) {
$num = 0 ;
}
elseif ($name == ‘ユーザの表示名B’) {
$num = 1 ;
}
else {
$num = 2 ; //どちらにも一致しなければC
}
return $num ;
}
[/js]

ユーザの表示名が判らなければ、「あなたのプロフィール」を確認してください。

ブログ上の表示名の場所

この関数では $name(投稿者のブログ上の表示名 後述)とこちらで指定したユーザの表示名を比較していき、一致すればそれぞれの番号を、どれにも一致しなければ2を $num に入れて返します。

ユーザが増えたとき

ユーザが増えたときは elseif を増やしていきます。

初期の段階なら増やして上から数字を振れば良いですが、既に振り分けを使っていて後々ユーザが増えた場合には既に振り分けている番号を変えないようにしましょう。

[js]
function get_usercode($name) {
if ($name == ‘ユーザの表示名A’) {
$num = 0 ;
}
elseif ($name == ‘ユーザの表示名B’) {
$num = 1 ;
}
elseif ($name == ‘ユーザの表示名D’) {
$num = 3 ;
}
else {
$num = 2 ; //どれにも一致しなければC
}
return $num ;
}
[/js]

広告を振り分ける

以下は functions.php ではなく、実際に広告コードを挿入したい single.php に書きます。

広告コードの用意

各ユーザの広告コードを準備して配列に入れておきます。

[php]
<?php $adscode[0] = ‘ユーザの表示名Aの広告コード’ ; ?>
<?php $adscode[1] = ‘ユーザの表示名Bの広告コード’ ; ?>
<?php $adscode[2] = ‘ユーザの表示名Cの広告コード’ ; ?>
[/php]

投稿者のブログ上の表示名を取得

投稿者のブログ上の表示名を取得する為には、get_the_author() 関数を使います。

[php]
<?php $num = get_usercode(get_the_author()); ?>
[/php]

この場合は get_the_author() の戻り値、つまり「投稿者のブログ上の表示名」を引数に与えて get_usercode 関数を実行し、その戻り値を $num に格納します。

よって get_usercode の $name には、記事を書いたユーザの表示名が入ります。

投稿者の広告コードを表示

ここまでで投稿者毎に振り分けた固有の番号が $num に格納されています。
あとは表示したいところに以下のコードを書いてやれば表示されます。

[php]
<?php echo $adscode[$num] ; ?>
[/php]

仮に $num が1であれば echo $adscode[1] となり、先ほど配列に入れたユーザの表示名Bの広告コードが表示されます。

広告コード以外を表示する

別の配列を用意してやればそのまま流用できます。

$num に既にユーザ毎に振り分けた数字が入っている場合、再度 get_usercode する必要はないです。

[php]
<?php $test[0] = ‘A test’ ; ?>
<?php $test[1] = ‘B test’ ; ?>
<?php $test[2] = ‘C test’ ; ?>

<?php $num = get_usercode(get_the_author()); ?>

<?php echo $test[$num] ; ?>
[/php]

あとがき

ずいぶんと安っぽいですが今のところこれでやってます。

サイト内で複数の広告コードを扱うことはリスクもありますが、ポリシーを理解ししっかり守っていけば問題はありません。
複数人管理のサイトでそれぞれの広告コードを貼る(Googleアドセンス) – 妄想コバンザメ

コメント

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