このサイトは「WP Social Bookmarking Light」というプラグインを用いて
Twitterの「Tweet」ボタンや、Facebookの「すき!」ボタンを表示しています。
# Like≠いいね なのに、なんで「いいね!」なんでしょう
先日、ある特定のページへのアクセスが170を超えた。
そんなにアクセスが集中するようなページじゃなかったので調査をしたところ、
GoogleAnalyticsでも同様に該当のページへのアクセスを170を超える回数カウントしていました。
どうやら原因はFacebook君が独自に開発した「fbxml」(FaceBook eXtended Markup Language)
を用いて作成した「すき!」ボタンを表示する時、
クライアントがIEを使用している場合に発生する可能性がある問題
のようです。
以下がそのバグ情報
このバグに該当する人のページのソースには「<fb:like>」のようなタグが存在するので確認してみてください。
「すき!」ボタンの処理が正しくできないクライアントからアクセスされたと思われるアクセスログ。
そこには、“http://自分のサイトのURL?fb_xd_fragment”のようなアクセスが大量に行われていた。
この「?fb_xd_fragment」へのアクセスをGoogleAnalyticsは「?fb_xd_fragment=」と認識するようだが、ログファイルに「?fb_xd_fragment=」の記述は1つも見つからなかったので、実際にアクセスしているのは「?fb_xd_fragment」と思われる。ポイントは対象が自分のサイトであり且つ「?fb_xd_fragment」が末尾に付いていること
私はReverseProxyにSquid君を利用しているので、Squidに出力させているアクセスログを対象に検索してみました。
zgrep 'fb_xd_fragment' /var/log/squid/access.log* | grep -v '"http://www.face'
難しいことは考えないでください!
- 「fb_xd_fragment」を含み、
- 且つ「”http://www.face」を含まないもの
を検索しています。この「”http://www.face」を含まないというのは、正常に「すき!」ボタンが動作している場合は、facebook君の本家サイトと通信を行なって、その上で「すき!」ボタンを表示しているのですが、ログに「”http://www.face」を含まないものは、正しく動いていないってことです。
ついでにアクセスログからクライアント情報を抽出してカウントしてみました。
気になる人は次のページにリストを乗っけておきますのでご覧ください。
ひとまず今まで利用していた「WP Social Bookmarking Light」を使っちゃいけないのかって落ち込んでみた(@_@;)..
いっそこの際、このプラグインのソースをイジってやろうと
プラグインディレクトリ内で小さな冒険をはじめたところ
なんと「オプションで“iframe”を指定されている場合はiframeを使ってボタンを」っていう記述を見つけたのです。
気になる方は次のページに記載いたしますので、ご覧ください。
ダッシュボードで「WP Social Bookmarking Light」の設定項目に目を通してみました。
ありました!ここですね!
1.「設定」⇒「WP Social Bookmarking Light」をクリックして「facebook」を押します
そして、
2.飛んだ先で「Version」を「iframe」に変更します。
「あれ?xfbmlってなに?」って突っ込まないこと。上述の「fbxml」のことです。IEとの相性が悪く上述の問題が発生しますし、Windowsの世界のシェア率を考えたら、確実にiframeを選択して間違いなしですね。若干の見た目の変化はあるようですが、我慢しましょう。
3.最後に保存するのを忘れないでくださいね。
ちなみに、この事象を意図的に再現しようと色々と試したのですが、再現できず・・
もう一度同じ人がアクセスしてきてくれたら分かりそうですが って待つか!w
以上、WordPressのプラグイン「WP Social Bookmarking Light」で利用するFacebookの「すき!」「いいね!」ボタンで発生するエラーを回避する方法、「fbxml」から「iframe」に変えることによって回避する方法を説明しました。
では引き続き興味のあるかたは引き続き次のページへLets’ go!
コメント