先日、エントリに追記をした際にOGPに変更がかからなかったので、デバッガを使って確認してみると・・・なんと!デバッガに見たことのないエラーが出ていました。
修正する必要があるエラー
プロパティ「og:locale:locale」に指定された値「ja」はタイプ「enum」としてパースできないため、URL「/archives/3017」のオブジェクト(タイプ「article」)は無効です。
「enumって何?」「og:localeは知ってるけどog:locale:localeって何?」という感じの悪いエラーです。
通常ならば表示される各オブジェクトのプロパティも表示されていないし・・・。
これは個別のエントリではなく、トップページでも同様のエラーが出ていた。
こちら側での設定は何も変えていないのになんでかな?とイラつきながら考えて対応をしてみたら、意外と簡単だったという備忘録エントリです。
同じことになっている人いそうだし、自分も再度同じことをやるかもしれないしね。
Sponsored Link
何がエラーの原因なのか
調べてみると、og:localeの値はja_JPが正しいらしいのだけれど、このブログではjpとなっていた。
これがダメらしい。でも、これを書き換えられればOKのはず。
このブログのFacebookのOGP(Open Graph protocol)の設定は、WordPressのプラグインWordPress › WP Facebook Open Graph protocol « WordPress Pluginsに任せている(以前は別のプラグインを使っていました)ので、やはり一番怪しいのはWP Facebook Open Graph protocol。
参考までに、このプラグインの最終のアップデートは2014-3-13。WordPress本体も最近マイナーバージョンアップがあったばかりだったような気が。
そのアップデートが関わっているのかな?
このプラグインはサポートフォーラムがしっかり機能しているようで、こんなやりとりが見つかった。
WordPress › Support » Locale error
英語で書かれているけれど、大雑把にまとめると日本語以外の他の言語でもおんなじことが起きている、それは作者も理解しているが根本的な原因はWordPress側に潜んでいるので・・・、と言う感じのやりとり。
いろんな環境上で汎用的に動くことが必要なプラグインだとこういうこともあるのかな?それならもうja_JPって直書きしちゃうよ!とエディタでソースコードを弄りました!
修正箇所はプラグインディレクトリ内にあるwp-facebook-ogp.phpの185行目のog:localeの出力箇所。
echo '<meta property="og:locale" content="' . strtolower( esc_attr( get_locale() ) ) . '"/>' . "\n";
を
echo '<meta property="og:locale" content="ja_JP"/>' . "\n";
とja_JPの直書きに変更(こういう力技の修正しか思いつかないので)。
修正の結果
これで問題はあっさりさっくりと解決しました。
デバッガ上でのエラーメッセージは消え、OGPのオブジェクトも表示されるようになりました。出力されるHTMLのソース上でもja_JPへの書き換えはできていました。
ということで、一件落着!なのですが・・・、実は今回のエラー以前から表示されている警告が引き続き表示されています。
このエラーについては以前にも対応しようとしたのですが、何がエラーと指摘されているのかの意味すら分からずな状態であり、警告なのでまあいいやと長く放置してます。
これについては、解決できた時に改めて書いてみようと思います。
関連リンク
WP Facebook Open Graph protocolのOGP設定はまだ修正されていなかった | kira-ism