Menu


WordPress テーマ Cocoon で管理者ログインしている場合に Adsense (アドセンス)広告を表示しない方法

2022年05月23日
2024年1月25日

WordPressテーマ「Cocoon」を利用している方の中でアドセンスを設置している方も多いのではないでしょうか。

Cocoonは、Cocoon設定 > 広告の順に進み、アドセンス設定 > アドセンス広告の表示にチェックを入れて広告コード(リンクユニット用コード入力・関連コンテンツ用コード入力)を入力している場合、CocoonのテーマがクライアントIDを取得してfooter-javascript.phpにてアドセンスのスクリプトコードを貼り付けてくれるという仕様となっています。

この仕様はとても便利なものですが、私個人としてはひとつ課題を抱えていました。それはログインしている管理者には広告を表示したくないというものです。

記事の更新作業中やページ遷移の度に広告を読み込みますので、同じIPアドレスから広告を何度も読み込むスパム行為と受け止められないか、広告を誤クリックしてしまってアカウントを停止されないか等の不安にもなります。

その問題解決としてWordPressにログインしている管理者であれば広告を非表示にするという事で対応することにしました。

この記事は、WordPress 5.9.3とCocoon 2.4.3を使用して検証しています。テーマファイルへを編集する場合はバックアップしてから作業されることをお勧めします。

Cocoonで管理者向けに広告を非表示にする方法

Cocoonで管理者向けに広告を非表示にする方法として、今回提案するものは以下のような要件として考え実装しました。

  1. アクションフック after_setup_theme を利用
  2. is_user_logged_in() 関数でWordPressにログイン中かどうか判定かつ、current_user_can(‘manage_options’) 関数でログインユーザーの中で manage_options の権限を持つユーザーかどうかを判定
  3. Cocoonのテーマセッティング $_THEME_OPTIONS all_adsenses_visible(アドセンス広告の表示の全てのアドセンス広告を表示)を0(広告を表示しない)に上書き

以下が実際のソースコードとなります。Cocoonの子テーマ(cocoon-child-master)のfunctions.phpに記載する形で対応します。

Cocoonで管理者向けに広告を非表示にするソースコード

if ( !function_exists( 'ictyorozu_after_setup_theme' ) ):
	function ictyorozu_after_setup_theme() {
		global $_THEME_OPTIONS;
		if ( is_user_logged_in() && current_user_can('manage_options') ) :
			$_THEME_OPTIONS['all_adsenses_visible'] = 0;
		else:
			$_THEME_OPTIONS['all_adsenses_visible'] = 1;
		endif;
	}
	add_action('after_setup_theme', 'ictyorozu_after_setup_theme');
endif;

このソースコードが正常に動作するとCocoon設定 > アドセンス広告の表示 > 全てのアドセンス広告を表示箇所がスキン制御として表示されるようになります。

Cocoon設定 全てのアドセンス広告を表示がスキン制御となった図
Cocoon設定 全てのアドセンス広告を表示がスキン制御となった図

管理者かどうか判断するのに is_user_logged_in() 関数のみでも良いかもしれませんが、プラグインによってはユーザーの権限によって表示を切り替えているものもあるかもしれないと思いましたので current_user_can() 関数にてユーザー権限を合わせてチェックするようにしています。current_user_can() 関数で設定できるユーザー権限はWordPress Codex 日本語版 ユーザーの種類と権限にて確認することができます。ユーザー権限に合わせて表示・非表示をカスタマイズしてみてください。

もし上記のコードで広告の非表示ができない場合は $_THEME_OPTIONS all_ads_visible(広告の表示の全ての広告を表示)を0(広告を表示しない)に上書きする設定を追加してみてください。

if ( !function_exists( 'ictyorozu_after_setup_theme' ) ):
	function ictyorozu_after_setup_theme() {
		global $_THEME_OPTIONS;
		if ( is_user_logged_in() && current_user_can('manage_options') ) :
			$_THEME_OPTIONS['all_ads_visible'] = 0;
			$_THEME_OPTIONS['all_adsenses_visible'] = 0;
		else:
			$_THEME_OPTIONS['all_ads_visible'] = 1;
			$_THEME_OPTIONS['all_adsenses_visible'] = 1;
		endif;
	}
	add_action('after_setup_theme', 'ictyorozu_after_setup_theme');
endif;
Cocoon設定 広告の表示がスキン制御となった図
Cocoon設定 広告の表示がスキン制御となった図

以上、Cocoon利用時に管理者向けにアドセンス広告を表示させない方法についての紹介でした。

ICTよろず相談所ではWordPressの修正・機能追加をはじめ、WordPressに関するお困りごとへの対応を承っております。WordPressに関するご相談はお問い合わせからご連絡ください。

広告