稼働中

第66回 初心者がワードプレスの独学を続ける。 コードをhead内に挿入する

ラジオボタンで選択した所定のコードをhead内に挿入する

第63回でラジオボタンについて記載しました。何か応用できないかと思いました。何処かのサイトで、閲覧者がGoogle Analyticsのデータ収集を無効にする選択が出来ました。同じような事ができないだろうかと考えてみました。

閲覧者がラジオボタンで選択した所定のコードをhead内へ書き込みをしようと思います。所定のコードはGoogle Analytics管理モードのコードを想定しました。具体的にはGoogle Analyticsの管理モードを閲覧者が変更できるようになります。(「Google Analytics」以後「GA」と略記することがあります)

Google Analytics管理モードのコードを調べる

GAの管理モードを調べてみました。Googleの「データのプライバシーとセキュリティ」の「Google アナリティクスのプライバシー管理」に説明がありました。
GAの管理モードを「データ収集をする(通常)、データ収集を無効にする、IP 匿名化する」の3つにしたいと思います。

データ収集を無効にするには、
window[‘ga-disable-MEASUREMENT_ID’] = true;
のコードを挿入するらしいです。

IP 匿名化するには
gtag(‘config’, ‘xxx’, { ‘anonymize_ip’: true });
のコードを挿入するらしいです。

headにコードを挿入する

オープンケージの記事を参考にしました。「https://open-cage.com/functions-php-meta-headcustomtags/」
以下を使えば良さそうです。

// headにコードを追加挿入する
function head_insert_tags() {
$insert_tags = <<<EOM

<!– headに表示させたいコードをここに書く–>

EOM;
echo $insert_tags;
}
add_action( ‘wp_head’, ‘head_insert_tags’, 99);

headにコードを追加

ラジオボタンで選択する

第63回のラジオボタンをそのまま使って修正していきます。POSTデータは表示するようにしています。第63回を参照してください。

function.phpに
<?php
$ga_set = $_POST[‘radio_data’];
echo “ga_set=”.$ga_set; echo “<br>”;
?>
を追記して、ラジオボタンの値を表示させて確認します。

表示させて確認

「A」を選択して確認します。画面、左上に表示されます。

「A」を選択して確認

ホームページに移動して見ます。残念ながら消えてしまったようです。

ホームページに移動

その後、元のページに戻ってもデータは消えてます。(第63回の同ページの再読み込みだけでは消えませんでしたが)

setcookie

素人ながら何か良い方法が無いかと調べてみました。あのCOOKIEに保存するくらいしか分かりませんでした。

setcookie(‘uselect’, $ga_set ,time()+60*60*24*7,’/’);

これで $ga_set(ラジオボタン)の値を$_COOKIE[‘uselect’]に保存する感じになるようです。
time()+60*60*24*7 は保存期間で一週間を示します。’/’はドメイン配下で有効を示すそうです。

setcookie

こんな感じで表示されました。

空の状態

cookieが空の状態で「C」を選んで送信しました。ラジオボタンの画面ではcookieの値は表示されていません。

「C」を選んで送信

しかし、ブラウザFireFoxのaddonのCookie Quick Managerで確かめるとそれらしきものが見えます。大丈夫な感じです。

Cookie Quick Manager

ホームページに移動して見ました。cookieデータは残っています。

ホームページに移動

ここから他ページへ移動すると消えてしまいました。

他ページへ移動

よく考えると、他ページでは $ga_set(ラジオボタンの値)が空なので当然です。そのため、もし$ga_setに値があればcookieに保管する(無ければ保管しない)ように変更しました。

if ( isset($ga_set) ){
setcookie(‘uselect’, $ga_set ,time()+60*60*24*7,’/’);
}

isset

先と同じ動作を行ってもcookieデータが残っています。大丈夫な感じです。
これでラジオボタンのあるページから他ページに移ってもクッキーデータを使用すれば、どのボタンを選択したか分かります。

動作確認

選択に応じてGAコードを挿入

とりあえずGAコードは横において進めます。
「A」はそのままデータ収集、「B」はデータ収集の無効化、「C」はIP匿名化、にしようと思います。

そのため、ラジオボタンの選択値によって分岐する必要があります。閲覧ページによって$ga_set(ラジオボタンの値)と$_COOKIEデータを使い分けるようにします。

以下を追記して選択値の動作を確認します。どのページでも選択した値が表示されるハズです。

if ( isset($ga_set)){
//ポストデータがあれば(ラジオページ)
$ga_select = $ga_set;
}
else{
//なければクッキーデータを使う(他ページ)
$ga_select = $_COOKIE[‘uselect’];
}
echo “headへ挿入 = “.$ga_select; echo “<br>”;

ページの選別

「B」を選択して確認します。ラジオボタンを選択します。問題無さそうです。

「B」を選択して確認

他ページへ移ります。他ページでも「B」が挿入されるので大丈夫なようです。さらに他ページへ移動して確認しました。問題ありませんでした。これで$ga_selectの値を判定して分岐できそうです。

他ページへ移動

分岐してheadに挿入

先のコードとheadに挿入するコードと組み合わせて分岐させます。差し替えます。
「B」はデータ収集の無効化、「C」はIP匿名化、それ以外(「A」)はそのままデータ収集に分岐させます。

組み合わせて分岐

function head_insert_tags() {
// function内なので再Postデータを取得が必要、$ga_setに保管
$ga_set = $_POST[‘radio_data’];
//
// $ga_selectでheadに挿入するコード分岐条件
if ( isset($ga_set)){
//ポストデータがあれば(ラジオページ)
$ga_select = $ga_set;
}
else{
//なければクッキーデータを使う(他ページ)
$ga_select = $_COOKIE[‘uselect’];
}
echo “headへ挿入 = “.$ga_select; echo “<br>”;
// 条件分岐
if ($ga_select == “B”){
$insert_tags = <<<EOM
<!– Google Analyticsデータ収集を無効化 –>
ここにデータ収集を無効化のコードを挿入する
EOM;
echo $insert_tags;
}
elseif ($ga_select == “C”){
$insert_tags = <<<EOM
<!– Google Analytics IPを匿名化 –>
ここに匿名化のコードを挿入する
EOM;
echo $insert_tags;
}
else{
$insert_tags = <<<EOM
<!– Google Analyticsデータ収集を有効化 通常動作 –>
ここに通常のコードを挿入する
EOM;
echo $insert_tags;
}
}
add_action( ‘wp_head’, ‘head_insert_tags’, 99);
?>

ラジオページで「C」を選択して確認します。匿名化になりました。大丈夫なようです。

「C」を選択して確認

他ページで確認します。匿名化を保持しています。大丈夫なようです。

ページを移動して確認

このページのソースを確認すると無事に</head>の前に挿入されています。問題なさそうです。
ラジオページで選択した値が他ページでも反映されています。

ページのソースを確認

整理をする

第63回で作成した「a_radio.php」ラジオボタンのラベルを「変更しない、データー収集を無効化、IP匿名化」に変更しました。”POST = “の表示をコメントアウトしました。

a_radio.php

変更後の表示です。

変更後の表示

function.phpに記載した部分も表示部分をコメントアウトなど整理しました。

function.php部

<?php
//GA管理コードをラジオボタン選択してhead内に挿入する
//ラジオボタンの値をクッキーにセットする
$ga_set = $_POST[‘radio_data’];
//echo “ga_set=”.$ga_set; echo “<br>”;
//
if ( isset($ga_set) ){
setcookie(‘uselect’, $ga_set ,time()+60*60*24*7,’/’);
}
// 条件分岐してラジオボタンで指定コードをhead内に挿入する
function head_insert_tags() {
$ga_set = $_POST[‘radio_data’];
//
if ( isset($ga_set)){
//ポストデータがあれば(ラジオページ)
$ga_select = $ga_set;
}
else{
//なければクッキーデータを使う(他ページ)
$ga_select = $_COOKIE[‘uselect’];
}
//echo “headへ挿入 = “.$ga_select; echo “<br>”;
//
// 条件分岐
if ($ga_select == “B”){
$insert_tags = <<<EOM
<!– Google Analyticsデータ収集を無効化 –>
<!– ここにデータ収集を無効化のコードを挿入する –>
EOM;
echo $insert_tags;
}
elseif ($ga_select == “C”){
$insert_tags = <<<EOM
<!– Google Analytics IPを匿名化 –>
<!– ここに匿名化のコードを挿入する –>
EOM;
echo $insert_tags;
}
else{
$insert_tags = <<<EOM
<!– Google Analyticsデータ収集を有効化 通常動作 –>
<!– ここに通常のコードを挿入する –>
EOM;
echo $insert_tags;
}
}
add_action( ‘wp_head’, ‘head_insert_tags’, 99);
//
?>

再度、確認します。「データ収集を無効化(B)」を選択します。

無効化(B)を選択

ページを移動しました。

ページを移動

ページのソースを確認します。head内に挿入されています。問題なさそうです。
ラジオボタンを選択して所定のコードをhead内に書き込みことが出来ていると思います。

ページのソースを確認

あとは・・

Google Analytics管理モードのコードを挿入すれば良いのですが、素人なので、Google Analyticsの実動作の確認方法が分かりません。なので確認できていません。
下部に参考例として載せておきますがあまり自信がありません。
Googleの「データのプライバシーとセキュリティ」
https://support.google.com/analytics/topic/2919631?hl=ja&ref_topic=1008008
などを参考にして判断して下さい。

まとめ

ラジオボタンを選択した所定のコードをhead内に書き込みことが出来ました。プライバシーポリシーに使えばGoogle Analytics管理モードを閲覧者が選択出来ると思います。
※動作の確認はLocal(Local by Flywheel)で構築したローカル(パソコン)環境で行っています。

データ収集を有効化 通常動作

Gaコード通常動作

<!– Google Analyticsデータ収集を有効化 通常動作 –>
<!– Global site tag (gtag.js) – Google Analytics –>
<script async src=”https://www.googletagmanager.com/gtag/js?id=G-**********”></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(‘js’, new Date());
gtag(‘config’, ‘G-**********’);
</script>

データ収集を無効化

GAコード無効化

<!– Google Analyticsデータ収集を無効化 –>
<!– Global site tag (gtag.js) – Google Analytics –>
<script async src=”https://www.googletagmanager.com/gtag/js?id=G-**********”></script>
<script>
window[‘ga-disable-G-**********’] = true;
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(‘js’, new Date());
gtag(‘config’, ‘G-**********’);
</script>

IPを匿名化

GAコード匿名化

<!– Google Analytics IPを匿名化 –>
<!– Global site tag (gtag.js) – Google Analytics –>
<script async src=”https://www.googletagmanager.com/gtag/js?id=G-**********”></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag(‘js’, new Date());
gtag(‘config’, ‘G-**********’, { ‘anonymize_ip’: true });
</script>