-
投稿者投稿
-
2025年2月27日 4:44 PM #144216
【お使いの Snow Monkey のバージョン】 28.0.4
【お使いの Snow Monkey Blocks のバージョン】 23.0.2
【お使いの Snow Monkey Editor のバージョン】 10.1.2
【お使いのブラウザ】 Google Chrome (バージョン: 133.0.6943.127(Official Build) (64 ビット) )
【当該サイトのURL】 https://yuwai-inc.jp/### 実現したいこと
Cookieバナーを表示させるサービスを導入しているのですが、Google 同意モード v2 に対応するため、テーマ側で設定することで利用している Google タグマネージャータグよりも上位の場所に計測タグを実装(Google タグマネージャータグよりも先に実行させたい)する必要が出てきました。
恐らくテーマのカスタマイズか、フックを追加という形になると思うのですが、このようなカスタマイズが可能かどうかをご教示いただきたいです。
どうぞよろしくお願いいたします。
### 発生している問題
### 試したこと
♥ 0いいねをした人: 居ません2025年2月28日 8:22 AM #1442202025年2月28日 9:14 AM #144228同意モードについては下記のドキュメントを参照いただけると良いかと思います。
同意設定を管理する(ウェブ) | Security and Privacy hub | Google for Developers
https://developers.google.com/tag-platform/security/guides/consent?hl=jaCookie 同意バナーを利用している場合、同意の状況に応じて Google タグマネージャーがタグをコントロールしてくれるのがこの同意モードなのですが、当方が利用している Cookie 同意バナーの場合、これを利用するにあたっては Google タグマネージャーのスクリプトよりも前に下記のスクリプトを実装する必要があるようです。
EU の法律(GDPR)的には、EU 圏内からのアクセスに対しては Cookie の利用に際して同意を得ないとならないので Cookie 同意バナーを導入しているのですが、同意バナーの利用&同意モードの実装はまだレアケースだと思うので、短期的には機能として提供いただくほどのものではなさそうですが、長期的に見ると日本を含めて法律がどうなるかによっては需要があるのかな・・・ぐらいの感覚です。
どうぞよろしくお願いいたします。
<!-- STRIGHT ONE Google Consent Mode Tag Start --> <script> window.dataLayer = window.dataLayer || []; function gtag() {dataLayer.push(arguments);} gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'functionality_storage': 'denied', 'personalization_storage': 'denied', ' security_storage': 'denied' }); const cmd = "yuwai-inc.jp"; const matches = document.cookie.match(new RegExp( "(?:^|; )" + "cookie_consent_gcm_data".replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); let val = null; if (matches) { cData = JSON.parse(decodeURIComponent(matches[1])); if (cmd === cData.cmd) { val = cData.gGcType; } } if (!val) { const lData = localStorage.getItem('cookie_consent_gcm_data'); if (lData) { const lCmdData = JSON.parse(decodeURIComponent(lData))[cmd]; if (lCmdData) { val = lCmdData.gGcType; } } } if (val) { let updateVal = {}; for (let i = 0; i < val.length; i++) { updateVal[val[i]] = 'granted'; } if (Object.keys(updateVal).length !== 0) { gtag('consent', 'update', updateVal); } } </script> <!-- STRIGHT ONE Google Consent Mode Tag End -->
♥ 0いいねをした人: 居ません2025年3月1日 10:18 AM #144237ありがとうございます!
パラメーターが色々あって、タグマネージャーの ID みたいにぽんと入れれば終わりというわけではなさそうなので、サクッと機能追加するのは難しそうですね…。今後のアップデートで、「Google 同意設定を有効化」にチェックを入れると下記のコードが出力されるようになる、さらに
default
の各パラメーターの値はフィルターフックでカスタマイズできるようにする、というのはやりたいなと思いました。<script> // Define dataLayer and the gtag function. window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} // Set default consent to 'denied' as a placeholder // Determine actual values based on your own requirements gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied' }); </script>
ということで、現段階では独自にアクションフックを使って計測タグを挿入する形になるかなと思います。現状タグマネージャーのコードは
wp_head
の優先度10
で出力されているので、wp_head
の優先度10
未満で計測タグを出力するようにすると良いのかなと。add_action( 'wp_head', function () { ?> // ここに計測タグ <?php }, 1 );
これでタグマネージャーのコードより前に(「直前」にコントロールする方法は現状無いです…)出力されると思うので試してみてください!
2025年3月3日 12:40 PM #144273ありがとうございます!
my-snow-monkey.php に下記追記してみたのですが、コードが追加されず(ソースや
DataLayer
値への追加が確認出来ず・・・)でして・・・。そのままコードを挿入して追加ではダメなのでしょうか。// 同意モード用スクリプトの追加 add_action( 'wp_head', function () { ?> <script> window.dataLayer = window.dataLayer || []; function gtag() {dataLayer.push(arguments);} gtag('consent', 'default', { 'ad_storage': 'denied', 'ad_user_data': 'denied', 'ad_personalization': 'denied', 'analytics_storage': 'denied', 'functionality_storage': 'denied', 'personalization_storage': 'denied', 'security_storage': 'denied' }); const cmd = "yuwai-inc.jp" const matches = document.cookie.match(new RegExp( "(?:^|; )" + "cookie_consent_gcm_data".replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" )); let val = null; if (matches) { cData = JSON.parse(decodeURIComponent(matches[1])); if (cmd === cData.cmd) { val = cData.gGcType } } if (!val) { const lData = localStorage.getItem('cookie_consent_gcm_data') if (lData) { const lCmdData = JSON.parse(decodeURIComponent(lData))[cmd] if (lCmdData) { val = lCmdData.gGcType } } } if (val) { let updateVal = {}; for (let i = 0; i < val.length; i++) { updateVal[val[i]] = 'granted'; } if (Object.keys(updateVal).length !== 0) { gtag('consent', 'update', updateVal); } } </script> <?php }, 1 );
♥ 0いいねをした人: 居ません2025年3月3日 12:49 PM #144274すみません、1つ上の返信なのですが、AutopitimizeでJavaScriptコードの最適化が走っていたために確認できなかったようでした。
こちらの設定の問題でしたので、上記への返信は不要でした・・・。失礼いたしました。
♥ 0いいねをした人: 居ません2025年3月4日 8:13 AM #144280ということは正しく追加はできて、計測も問題なしということですかね?
♥ 0いいねをした人: 居ません -
投稿者投稿
- このトピックに返信するにはログインが必要です。