HTML圧縮系プラグインを導入したらSNSボタンが機能していなかった!
今までソーシャルボタンが機能していなかった!!
WordPressには大体ソーシャルボタンが付いてると思いますが、SNSボタンを設置してから自分で押して動作確認してますか?
長年運営していたブログにソーシャルボタンを貼り付けていたのですが、まったく数字が伸びないので気になっていました。
ふと思い、自分でクリックして押してみたら反映されません・・・。_| ̄|○
その押したボタンは、「はてなブックマーク」だったのですが、なぜ押しても反映されなかったんだろ?とHTMLソースを眺めていたら、下記のようになっていました。
<a href="//b.hatena.ne.jp/entry/http:/www.serverlog.jp/" class="hatena-bookmark-button" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加">
※一部抜粋
これを見て気づいた方はすごいです!
はてなブックマークの設置の正しい例と、無効な例を比較
まずは、無効な例から、、
無効な例
<a href="//b.hatena.ne.jp/entry/http:/www.serverlog.jp/" class="hatena-bookmark-button" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加">
続いて、正常な例をご覧下さい。
正常な例
<a href="http://b.hatena.ne.jp/entry/http://www.serverlog.jp/" class="hatena-bookmark-button" data-hatena-bookmark-layout="vertical-balloon" data-hatena-bookmark-lang="ja" title="このエントリーをはてなブックマークに追加">
よく見ると、、
無効な例の方は、「URIスキームが省略」されてることが分かります。
//b.hatena.ne.jp/entry/http:/www.serverlog.jp/
最初の「http://」→「//」への省略は仕様上問題ありません。
しかし、赤字2つめの「http://」→「http:/」まで中途半端に省略しています。
これが原因で、はてなブックマークにページのURLが正しく認識されず、はてなブックマークが無効になっていました。
犯人はだれ?
この問題の原因を探すために、一旦、プラグインをすべて無効にしてみたところ、はてなブックマークが問題無く認識されることが分かりました。
そこで、一つ一つプラグインを有効にしていくとあるプラグインで上記のURIスキームが省略される事が判明。
犯人はこれ
HTML圧縮プラグインの「WP-HTML-Compression」
このプラグインはHTMLを圧縮するだけじゃなく、URIスキームまで省略していたようです。今回の原因が分かったのでHTML圧縮系プラグインは、削除して今後は導入しないことにしました。
皆さんも、HTML圧縮系プラグインを導入するときは、ソーシャルボタンが動くかどうか、自分でポチッしてみて下さいね。
記事の HTML の例は、WordPress が引用符(")を飾りの引用符(”)に置き換えて表示していたので、元の形に戻してコードの枠に入れました。
2つの URL を PHP の parse_url() で分解すると、違いがはっきりします。2026年11月5日に PHP 8.5.8 で確かめました。無効な例は、はてなに渡す URL(path の中の http:/www...)の / が 1つ欠けています。
$ php -r 'var_dump(parse_url("//b.hatena.ne.jp/entry/http:/www.serverlog.jp/"));'
array(2) {
["host"]=>
string(14) "b.hatena.ne.jp"
["path"]=>
string(30) "/entry/http:/www.serverlog.jp/"
}
$ php -r 'var_dump(parse_url("http://b.hatena.ne.jp/entry/http://www.serverlog.jp/"));'
array(3) {
["scheme"]=>
string(4) "http"
["host"]=>
string(14) "b.hatena.ne.jp"
["path"]=>
string(31) "/entry/http://www.serverlog.jp/"
}
原因のプラグイン WP-HTML-Compression は、WordPress.org の API で見ると 2026年11月時点でも配布は続いていますが、最終更新は 2017年11月で、動作確認は WordPress 3.5.2 までです。
$ curl -s "https://api.wordpress.org/plugins/info/1.2/?action=plugin_information&request%5Bslug%5D=wp-html-compression"
name: WP-HTML-Compression / version: 0.5.8 / last_updated: 2017-11-28 / tested: 3.5.2
| 項目 | この記事(2014年) | 2026年11月時点 |
|---|---|---|
| WP-HTML-Compression | 使っていた | 0.5.8 のまま(最終更新 2017年11月・WordPress 3.5.2 まで確認) |
| HTML の圧縮 | プラグインで HTML を書き換え | サーバーの gzip / Brotli で転送を圧縮(HTML は書き換えない) |
| URL | はてなに渡る URL | 結果 |
|---|---|---|
| //b.hatena.ne.jp/entry/http:/www.serverlog.jp/ | http:/www.serverlog.jp/(/ が 1つ) | 認識されない |
| http://b.hatena.ne.jp/entry/http://www.serverlog.jp/ | http://www.serverlog.jp/ | 認識される |