目次
関連する仕様
投稿のサニタイジングについて
- WordPress はデフォルト・標準で投稿に対してサニタイジングを行う(wp_kses関数など)
- この動作は、シングル版(通常)のWordPressの場合は「管理者」「編集者」ロール、マルチサイト版の場合は「特権管理者」ロールのユーザの場合、スキップされる
- Instagram の埋め込みタグには画像等のデータが dataURI として含まれており、これはWordPressのサニタイジングの対象となるため、上記のロール以外のユーザの場合、投稿時に該当部分が削除される
- マルチサイト版の場合、その子ブログについて「管理者」ロールや「編集者」ロールを持っていてもサニタイジングはスキップされないため、貼り付けができない
oEmbed について
- 各サイトでこのような投稿埋め込みのために利用できる共通仕様として「oEmbed」というAPI仕様がある
- WordPress の機能としてこの oEmbed に対応したサイトからの埋め込み投稿はURLのみで利用できる
InstagramのoEmbed 対応およびWordPressのInstagram対応について
- Instagram もoEmbed に対応している https://www.instagram.com/developer/embedding/?hl=ja 最下部に仕様
- Instagram はWP3.5以降でデフォルトで利用できるようにコアに埋め込まれている
- ただしWP4.4より古いバージョンでは、埋め込みに対応するURLに www. が含まれている場合(つまり https://www.instagram.com/p/・・・・/ の形式の場合)、InstagramのURLであることを認識せず埋め込みとして動作しない( https://instagram.com/p/・・・・/ の形式のみInstagramの埋め込みと認識され、動作する)
→これは4.4以降のバージョンでどちらでもいいように改修されている
Instagramの投稿を埋め込む場合
手順
- 通常通り、埋め込みタグを取得する
- そのタグ内に含まれるAタグのリンク先となっているURLを取得する
- (WPのバージョンが4.4以降の場合)投稿内にそのURLを貼り付ける
(4.4未満のバージョンの場合)取得したURLからwww. を除いたURLを投稿内に貼り付ける
例
- 上記に含まれるURL
https://www.instagram.com/p/BACJs6ULoAu/ - WP4.4 以降での貼付け(上記と同じ)
https://www.instagram.com/p/BACJs6ULoAu/ - WP4.4 未満の場合の貼付け(www. をとる)
https://instagram.com/p/BACJs6ULoAu/
参考URL
wp_kses_post() ( WordPress Codex )
oEmbed( WordPress Codex )
GitHub / WordPress
Instagram 埋め込みについてのドキュメント