モバイル(スマートフォン)用のアドセンスを、複数設置しようとすると「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というか、当然エラーは出なくなったんですが…
広告も表示されません。
複数貼りは別コードが提供されてるのかな?それとも普通に「コンテンツ用」を貼り付けるのでしょうか。
ちょっと調査中です。