モバイル(スマートフォン)用のアドセンスを、複数設置しようとすると「Cannot redeclare read_global()… 」のエラー

以前までは、モバイル用のアドセンスは1ページに1箇所しか貼ってはいけない規約だったんですが、今はモバイルも3箇所までいいそうなので設定してみたところ、functionの二重宣言エラー。

Fatal error: Cannot redeclare read_global() (previously declared in /home/dacelo/html/wp-content/plugins/wptouch/themes/dacelo/adsense.php:16) in /home/dacelo/html/wp-content/plugins/wptouch/themes/dacelo/adsense2.php on line 18

モバイル版アドセンセスが提供してくるコードがやたら長かったので、別ファイルにしてインクルードして貼り付けてたので、二つのファイルをdiff取って調べてみました。
そしたら、function以下は全て同じソースでした。
アドセンスのクライアントIDやチャンネル情報は、最初のGLOBALS配列にまとまっていて、違う箇所はslotnameの一箇所のみでした。

<?php
$GLOBALS['google']['client']='ca-mb-pub-xxxxxxxxxxxxx';
$GLOBALS['google']['https']=read_global('HTTPS');
$GLOBALS['google']['ip']=read_global('REMOTE_ADDR');
$GLOBALS['google']['markup']='xhtml';
$GLOBALS['google']['output']='xhtml';
$GLOBALS['google']['ref']=read_global('HTTP_REFERER');
$GLOBALS['google']['slotname']='xxxxxxxxxxx'; ←ここだけが違う
$GLOBALS['google']['url']=read_global('HTTP_HOST') . read_global('REQUEST_URI');
$GLOBALS['google']['useragent']=read_global('HTTP_USER_AGENT');
$google_dt = time();
google_set_screen_res();
google_set_muid();
google_set_via_and_accept();
function read_global($var) {
  return isset($_SERVER[$var]) ? $_SERVER[$var]: '';
}
以下略

広告

なので、function read_global….以下は、2度目は全て削除してしまってOKですね。

結果

OKはOKというか、当然エラーは出なくなったんですが…
広告も表示されません。
複数貼りは別コードが提供されてるのかな?それとも普通に「コンテンツ用」を貼り付けるのでしょうか。
ちょっと調査中です。

About: dacelo


Leave a Reply

Your email address will not be published. Required fields are marked *