【Simplicity2】WordPress4.5.3のブログカード仕様変更への対応方法

WordPressのバージョンが4.5.3になり、ブログカードの仕様が若干変更されました。

今までは内部リンクも外部リンク同様に、一度アクセスしてoEmbed APIを取得する動作でした。

バージョン4.5.3からは内部リンクはアクセスしないで取得するように変更されました。

スポンサーリンク

Simplicity2への影響

とりあえず修正版Simplicity2.2.0dをアップしておきました。ダウンロードはこちら。以下は、2.2.0dにアップしないで修正だけしたいとか、他のテーマやプラグインを利用している場合の修正方法としてご利用ください。先日、Wordpr

http://wp-simplicity.com/pre_oembed_result/

作者様のページでも指摘されております通り、WordPressのブログカードが表示されてしまいます。

解決策として以下のコードが挙げられていますが、正しいです。

これによって「内部リンクの場合にアクセスしないで取得する動作」が除去されます。

また「<a href=”URL”>URL</a>」のように書くことで治ったという報告もいくつかありますが、その解決方法も正しいです。

この方法であれば下で紹介するキャッシュの削除を行わなくても問題なく表示されるようになるでしょう。

そもそもWordPressのoEmbedは以下の正規表現に引っかかるものに対して行われるため、「<a href=”URL”>URL</a>」は引っかかりません。

Simplicityで用意されているoEmbedの方には引っかかるため、ブログカードが表示されます。

次以降は単にURLのみを記述した場合の内容です。

今までのoembed無効のコードが効かないのはなぜ?

themes/simplicity2/lib/blog-card.phpに書かれているoembed無効のコードは、「一度アクセスしてoEmbed APIを取得する動作」を停止するものです。

したがってアクセスする動作をしないで取得を行う内部リンクに関しては効果がありません。

解決策のコードを入れても戻らないのはどうしたらいいの?

oEmbedのキャッシュはwp_postmetaに「_oembed_[url等のハッシュ値]」で格納されています。

これを削除することで解決することができます。

DBをいじれる場合

DBを直接触れる方は、例えば記事ID123の記事のキャッシュを削除したい場合は

とすれば消すことができます。

全て削除する場合は「 and post_id = 123」を除いたものを実行します。

※設定によってはテーブル名(プレフィックス)が違う場合があります。

DBをいじれない場合

先の解決策のコードも含めて子テーマのfunctions.phpなどに以下のコードを貼り付けます。

なおPHP5.3以上向けのコードになります。

その後、投稿一覧の「oEmbed Cache削除」列の「削除」ボタンで記事ごとにoEmbedのキャッシュの削除を行うことができます。

全て削除する場合は

の箇所を

と書き換えます。

終わった後はおそらく今後不必要な機能ですので、先頭の

以外は削除することをおすすめします。

また今後Simplicityの機能として取り入れられると思いますので、その際は取り除いてしまっても問題ありませんし、速度を追求するのであれば取り除くべきです。

まとめ

いきなり仕様が変わるのは困りますよね

困っている方は参考にしてみてください。