ぜひシェアをお願いします!

Jetpackのパブリサイズ機能がうまく動作しない問題

Jetpack のパブリサイズ共有機能を使うと、記事を更新したとき Twitter や Facebook に自動で共有してくれるので、とても便利です。

しかし、希望した通りの形で投稿されているとは限りません。

実際に、パブリサイズ共有機能で投稿するとうまく表示できていないということがあったので、原因を探ってみました。

スポンサーリンク

問題点

  • Twitter Card が表示されていない or 表示がおかしい
  • Facebook の Open Graph の画像が違う
  • URL がデフォルトのまま投稿される

これらの問題点は、記事を公開したときのパブリサイズ共有のみに起こるもので、投稿後のツイートやシェア時にはちゃんと動作しています。

URLが原因?

デフォルトのURLを301リダイレクトしている

わかりやすいように、例を挙げてみましょう。

デフォルト:http://aita.info/?p=2126

変更後:http://aita.info/problems-of-jetpack-publicize

上の URL は記事を書いたときにデフォルトで与えられる URL です。ドメインの後に /?p=(数字) という形になっています。これをオリジナルの文字列に変更した URL が下の URL です。

WordPress 側の処理では、デフォルトの URL をオリジナルの URL に 301 リダイレクトする仕組みになっています。

正確に言えば、canonical タグによってオリジナルの URL に正規化されているようです。

そのため、デフォルトの URL で接続しても記事を開くことができます。

パブリサイズ共有しているURL

デバッグしてみたところ、パブリサイズ共有機能ではデフォルトの URL 、つまり変更前の URL で共有していました。

Twitter Card や OGP の設定には変更後の URL が使われているので、変更前の URL で投稿されるパブリサイズ共有では動作しません。

FacebookのOpen Graphの画像が違う

Facebook の Open Graph 画像も間違っていました。

投稿にはそれぞれ別のアイキャッチ画像をつけており、og:image でその画像を指定しています。

しかし、実際にパブリサイズ共有された投稿には、ブログ全体に指定している OGP タグで設定している画像が使われていたのです。

これでは記事に関係なく画像が画一的になってしまって見た目も悪く、何の記事なのか画像から判断することもできません。

デバッグではデフォルトの URL が Fetched URL になっていても、画像は記事のアイキャッチ画像が表示されていたので、URL が原因でもないよう……

結論としては、勝手に直っていたのですが、なぜ直ったのかはよくわかっていません。

Twitter Cardが生成されない

Twitter の場合、投稿されてもカードの形になっていません。アイキャッチ画像は読み込めていますが、画像として投稿されています。

こちらも当然 URL はデフォルトのままです。

リダイレクト時にエラーが発生

Twitter Card もデバッグしてみたところ、オリジナルの URL にリダイレクトしているので画像が読み込めず、カードの画像がないというエラーが発生していることがわかりました。

Twitter Card の形式自体は読み込めても画像のところでエラーが発生し、結果としてカードが生成されないようです。

解決方法

Jetpack のソースを編集する

パブリサイズ共有される際にオリジナルの URL を共有するように設定すれば解決できることは上記より判明しました。しかし、可能かどうかは全然わかっていません。

Jetpack 側の回答としては、この問題について把握はしているものの対応中とのことで、まだ解決には至っていないようです。

となると、自分で編集するのはかなり厳しいのではないかと思っています。

URLを正規化しない

どうしても表示にこだわりたい場合、オリジナルの URL を設定しなければリダイレクトによるエラーが発生しません。

しかし、SEO 的に問題がありそうであるのと、記事の内容が URL を見てもわからなくなってしまうので、解決策として適しているとは言えません。

手動で修正する

Facebook の場合、過去に投稿した Open Graph を修正することができるので、その機能を使って修正すれば見た目上は問題ありません。

ただ、Twitter Card に関しては手の打ちようがないのですが。

まとめ

Jetpack のパブリサイズ共有機能で自動的に投稿すると、デフォルトの URL で共有されてしまうため、Facebook の OGP や Twitter Card の表示がおかしくなってしまいます。

Jetpack プラグインのソースコード自体をいじって解決することはできなくはないと思いますが難しいので、別の方法で解決しました。

その方法については、次回紹介したいと思います。

スポンサーリンク

ぜひシェアをお願いします!

mktia は、Amazon.co.jp を宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazon アソシエイト・プログラムの参加者です。