Snow Monkey v11.3.2 の概要
不具合の修正
- 環境によってブログカードがブログカードの形式ではなく、リンク先のページを丸ごと埋め込んでしまうことがある不具合を修正
環境によってブログカードがブログカードの形式ではなく、リンク先のページを丸ごと埋め込んでしまうことがある不具合を修正
下記でご報告いただいてこの問題に気づきました。
こちらの環境でいろいろ試してみたのですが全く再現できず、どうしようもなくなったのでトピックを作成してくださった NEPPIE さんに「NEPPIE さんの環境でテストさせてもらえませんか?」と訪ねたところご快諾いただけまして、なんとか解決することができました。NEPPIE さん、ありがとうございました!!
で、結局なにが原因だったのかを解説。
Snow Monkey のブログカードは、URL が埋め込まれたときにそのページを解析しにいって、取得した情報をキャッシュし、そのキャッシュをもとにブログカードを表示する仕組みになっています。
で、フロントでキャッシュが切れているページが表示されたときは
- js で
register_rest_route
で登録したルートにアクセス- 同じようにページを解析しにいってキャッシュを生成
- キャッシュをもとに生成されたブログカードの HTML を取得
- ブログカードを表示
という流れになります。このとき、通常 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 ではなくトップページがまるごと帰ってくる(ルートが登録されていないので無視される)、となっていたのでした。
これは結構ありそうなミスだと思うので、備忘録として残しておきます。