logo
Published on

SQLでGoogleアナリティクスやサーチコンソールのコード追加

Authors

賢威テーマにGoogleアナリティクスやGoogleサーチコンソールのJavascriptのコードを追加するには、 index.phpやheader.phpを弄って追加することは不可能なので、

賢威の設定(サイト内共通) > </head> 直前に挿入するコード記入欄

をWordPress管理画面から開いて、コピペするのが通常のやり方になります。

ただ、このやり方、とても面倒ですよね。 サイトにアクセスして、ログインして、賢威の設定を開いて…これをサイトごとに繰り返すわけです。ちょっと面倒。

ということで、Mysql経由でSQLコマンドを使って追加してしまいましょう。

環境

Mysqlクライアント: Workbench サーバー: xserver

xserverのmysqlにworkbenchからアクセスする方法は別記事で解説しています。

賢威のテーブルについて

wp_keni_pvとwp_keni_setting706というテーブルがありますが、賢威の設定が入っているのはwp_keni_setting706の方です。 wp_keni_pvはあんま使わないですね。 "アクセス解析一切してなかったけどこれまでのアクセス履歴が見たい!"って人が偶然賢威使ってたって場合には、ここをselectして上げることでアクセス数をぱっと見たり統計したりなんてことは可能ではありますね。そういう需要くらいです。

select * from wp_keni_pv ;
#=> 各投稿の閲覧数が格納されている。

主なSQL

select * from wp_keni_setting706 ;
#=> テーブル全体を出力。

select ks_val from wp_keni_setting706 where ks_id=12 ;
#=> "head直前に挿入するコード記入欄"に対応する値のフィールドを出力。

update wp_keni_setting706 set ks_val = CONCAT_WS('\n', ks_val, 'この文字列を追記します') where ks_id=12 ;
#=> 改行して文字列を追記する。CONCAT_WS()

やり方

では、実際にSQLでフィールドの値をアップデートしてみましょう。

まず、サーチコンソールです。 既にサーチコンソールコードのデータが入っているなんて場合は、スキップしましょう。

格納されているかどうか確認するには、select ks_val from wp_keni_setting706 where ks_id=12 ;で表示されるフィールドを右クリックし、open value in viewerをクリックしてフィールドのテキストを全て閲覧することが可能です。

# サーチコンソールコードをアップデート。
update wp_keni_setting706 set ks_val = '
<meta name="google-site-verification" content="vEAB6qwa-EJNA-nuBZgeYthoRCz0T7oBn0mvsS8l7pY" />
' where ks_id=12 ;

アナリティクスコードのシングルクォーテーションをエスケープする

次はアナリティクスのコードを追記する形でアップデートしたいわけですが、(別に追記じゃなくてサーチコンソールコードと一緒にupdateしてもいいのですが、今回は「既にサーチコンソールのコードが格納されていた」というよくある事態を想定しています。)

実はアナリティクスコードは"'もあって、つまり、シングルクォーテーションもダブルクォーテーションも混じっているんですよね。 なので、通常シングルクォーテーションだけだったら値をダブルクォーテーションで囲むし、ダブルクォーテーションだけならシングルクォーテーションだけで囲むってやり方になるんですよ。 ただ、こういう感じなので、どっちかをエスケープしてあげる必要があります。 エスケープ処理は、手動で「'の前に\を書き加える」って作業をしてもいいんですけど、僕は嫌なのでスクリプトを書きました。

sed -e "s/'/\\\'/g" << EOT
'
EOT

#=> \'

この通り、置換してくれます。

これをアナリティクスコードにやってあげます。 (WSL環境なのでWSL環境じゃない場合はclip.exeなんかは各自で判断してください。)

sed -e "s/'/\\\'/g" << EOT | clip.exe
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-117866431-9"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'UA-117866431-9');
</script>
EOT

そしてコピーされたデータがこちら。('\'っていうのは共通のエスケープ文字で、それはHTMLでもマークダウンでも同じなので、たぶん\消えてますがご了承ください。)

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-117866431-9"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag(\'js\', new Date());

  gtag(\'config\', \'UA-117866431-9\');
</script>

ではこれを、mysqlでupdateしてあげましょう。

update wp_keni_setting706 set ks_val = CONCAT_WS('\n', ks_val, '
<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-117866431-9"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag(\'js\', new Date());

  gtag(\'config\', \'UA-117866431-9\');
</script>
') where ks_id=12 ;

で、これをselect ks_val from wp_keni_setting706 where ks_id=12 ;で確認。

…ちゃんと入ってますね。追記も上手くいっています。

コードを追加するもう一つのやり方。

今回はこんなややこしいやり方をしましたが、Workbenchであれば、フィールドの値を直接閲覧することだけでなく、編集することもできますので、 つまり、

use YOUR_DATABASE_NAME ;
select ks_val from wp_keni_setting706 where ks_id=12 ;

とSQLを打って表示されるフィールドを右クリックして、open value in viewerで編集画面を開き、それを編集してapplyしてupdateする、ってことも出来ます。

こっちのほうが簡単です。

ただ、賢威のこのテーブルは、read onlyって書いてあるので、こういったやり方で編集することは出来ないみたいですが…。