Snow Monkey v11.3.2 をリリースしました

Snow Monkey v11.3.2 の概要

不具合の修正

  • 環境によってブログカードがブログカードの形式ではなく、リンク先のページを丸ごと埋め込んでしまうことがある不具合を修正

環境によってブログカードがブログカードの形式ではなく、リンク先のページを丸ごと埋め込んでしまうことがある不具合を修正

下記でご報告いただいてこの問題に気づきました。

こちらの環境でいろいろ試してみたのですが全く再現できず、どうしようもなくなったのでトピックを作成してくださった NEPPIE さんに「NEPPIE さんの環境でテストさせてもらえませんか?」と訪ねたところご快諾いただけまして、なんとか解決することができました。NEPPIE さん、ありがとうございました!!

で、結局なにが原因だったのかを解説。

Snow Monkey のブログカードは、URL が埋め込まれたときにそのページを解析しにいって、取得した情報をキャッシュし、そのキャッシュをもとにブログカードを表示する仕組みになっています。

で、フロントでキャッシュが切れているページが表示されたときは

  1. js で
  2. register_rest_route で登録したルートにアクセス
  3. 同じようにページを解析しにいってキャッシュを生成
  4. キャッシュをもとに生成されたブログカードの HTML を取得
  5. ブログカードを表示

という流れになります。このとき、通常 register_rest_route で登録したルートは

http://example.com/wp-json/wp-oembed-blog-card/v1/〜

という URL でアクセスできるのですが、環境によってこれが

http://example.com/index.php?rest_route=/wp-oembed-blog-card/v1/〜

となることがあるようでした。詳しく検証していませんが、おそらくサブディレクトリに WordPress をインストールするとなる気がします。

どちらの URL でもちゃんとアクセスできるように、アクセス先の指定は

get_rest_route( null, '/wp-oembed-blog-card/v1' )

のようにしないといけないのですが、僕は

home_url( '/wp-json/wp-oembed-blog-card/v1' );

のようにしていたため、環境によっては http://example.com/wp-json/wp-oembed-blog-card/v1/〜 にアクセスしても REST API にアクセスできず、ブログカードの HTML ではなくトップページがまるごと帰ってくる(ルートが登録されていないので無視される)、となっていたのでした。

これは結構ありそうなミスだと思うので、備忘録として残しておきます。

この記事を書いた人

キタジマ タカシ

長崎県長崎市在住。地元のWeb制作会社でWebデザイナー/エンジニアとして従事した後、2015年にフリーランス [ モンキーレンチ ] として独立。WordPress のテーマやプラグイン、ライブラリ、CSS フレームワーク等、多数のプロダクトをオープンソースで開発・公開しています。

Snow Monkey オンラインコミュニティ

Snow Monkey をより良いテーマにするために、今後の機能開発等について情報共有したりディスカッションをしたりする場所です。より多くのユーザーの交流があったほうがより良いプロダクトに育っていくと思いますので、ぜひご参加ください!