ページ目次
Googleアナリティクスでトラッキングできていない
新しくWordpressでサイトを起ち上げ、Googleアナリティクスを設定。確認のためトラッキングされているか調べると、あれ?トラッキングされていません…。なぜ??
問題はプラグインによってまとめられたjavascript
サイトコンソールを見てみると、javascriptでunexpected tokenとエラーを吐いていました。予期しない場所に「:(コロン)」があって困っているみたいです。
エラー場所を確認すると、下記の一文にあたりました。
{"@context": "https://schema.org/~~~"}
なるほど、こいつか。サイトの構造化データをJSON形式で指定するあれです。
構造化データはld+jsonで指定する
構造化データは、JSON-LDとして指定されなければなりません。それが、Wordpressのプラグイン「Head Cleaner」によって他のjavascriptたちと同様にひとつにまとめられてエラーが発生し、その後に続く、アナリティクスのコードが読み込まれていなかったのでした。
<!-- schemaの本来の指定場所 -->
<script type="application/ld+json"></script>
<!-- Head Cleanerによってtext/javascriptにまとめられていた -->
<script type="text/javascript"></script>
上のようにjavascriptのタイプ指定が適切なものになっていなかったため、unexpectedエラーが発生していたのでした。
問題解決に向けて
Yoast SEO と Head Cleaner
まず当該サイトは、先出のHead CleanerとサイトにSEO対策を施してくれるYoast SEOというド定番のプラグインを使用していました。
今回は、Schemaの記述(Yoast SEOが書き出す)部分が、本来あってはいけない部分に記述されていた(Head Cleanerがやっちゃった処理)ということで、どちらかの設定を見直せば何とかなりそうです。
まずはHead Cleanerの設定を。と、思ったら…
原因が判明したので、早速Head Cleaner側の設定でjavascriptを一つにまとめないように設定しようとしたところ、そんな項目が見当たらない…。
なぜに?仕様がかわったの?わからない…
結局Head Cleanerの設定をいじることはあきらめました。
Yoast SEO の設定をいじってSchemaを無効化する
仕方がないので、YoastがSchemaデータを作成するのをやめさせたいと思います。下記のサイトを参考にfunction.phpにコードを追加します。
【参考】YOAST SEO GUIDE: HOW TO DISABLE SCHEMA JSON-LD IN WORDPRESS
function remove_json_from_yoast( $data ) {
$data = array();
return $data;
}
add_filter( 'wpseo_json_ld_output', 'remove_json_from_yoast', 10, 1 );
最後のとどめ。Tag Managerの読み込みコードが…
これで大丈夫と思いきや、またエラー。
Google Tag Manegerを使っていたんですが、その読み込みコードのシングルクオートの片方を、Head Cleanerさんが勝手にダブルクオートに変換していたようです。
なのでダブルクオートに書き換えました。
// 一部抜粋
// シングルクオートからダブルクオートへ
j.src="https://www.googletagmanager.com/gtm.js?id="+i+dl;
これでコンソールにエラーが出ることもなくなりました。しかし、そんなに重たいサイトでもないので、ここまでの手数をかけてまでHead Cleanerを使う意味はあるのか…。悩みどころです。
All in One SEOに変えました【追記: 2017.4.20】
やっぱりhead部分がゴチャゴチャしているのは気に食わないので、「Head Cleaner」は使いたい。
と、いうことで、Yoast SEOやめました。
Yoastと同じくらい人気のAll in One SEOに変更してみました。こちらはHead Cleanerと併用しても何事もなく、問題なさそうです!
“WordPressプラグインを「All in One SEO」に変えたのは「Head Cleaner」と「Yoast SEO」の相性がどうもよくないから” への3件の返信
コメントは受け付けていません。