【WordPress】勝手にread.amazon.com.auのiframeカードが挿入される

Change Language▸English
ほったらかしにしていたブログを久々に見に行ったら、なんか変な広告が挿入されている……もしかしてウイルス!?とビビりまくりながら、半日かけて修正する方法を模索。分かってみればなんてことはない、とても単純な原因でした。本当に時間を無駄にしたよ……。

WordPressの記事に、設定していないiframeが表示される


こんな感じのiframeが、記事の中にどどーんと表示される。
変更した覚えが全くないので、一瞬乗っ取りやウイルスを疑ったが、管理部分に異変は無く、Amazonアソシエイトタグを追加されてる訳でもない。意味不明。
リンク先が
https://read.amazon.com.au/kp/embed~
と見慣れないURLになっているので、なりすましサイトへの誘導かとも思いましたが、よくよく調べてみるとこれはAmazonオーストラリアの正式なURLであることが判明。ちょっと一安心。(com.au自体がオーストラリア特有のドメインらしい)
それでもiframe自体が大きくて滅茶苦茶邪魔くさくて、サイトのデザイン丸崩れになっているのがイライラしました。

原因はWordpressのoEmbed埋め込み機能だった

最初まったく原因が分からず、とにかくWordpressテーマの怪しい所全部チェックしてみたり、プラグイン全停止してみたり、Wordpress更新してみたり、借りてるサーバーの情報漁ってみたりと、半日がかりで調べましたが上手くいかず。
最後の最後で、「これなんか普通にブログカードの一種っぽいし、多分Wordpress側でAmazonのリンクURLから自動挿入してるのかな」⇒「ん?ブログカード? そういえばそんな機能デフォルトでWordpressにあったような……」と思い当たりました。
それが「oEmbed埋め込み機能」だったのです!
こんなん、WordPress5.0で搭載された新エディタGutenberg(グーテンベルグ)と並んで「いらないお節介機能」に即認定ですわ~。

WordPressのoEmbedを無効化する方法

原因が分かったところで、早速機能を無効化!
テーマのfunctions.phpに
remove_filter('the_content', array($wp_embed, 'autoembed'), 8);
と一行書いてしまえば終了です。
あれだけ悩んでいた時間は何だったんだ……!

最悪だったoEmbed埋め込み機能の誤作動

oEmbedまでに行き着くのに大分掛かりましたが、そもそもこの機能、なんか挙動がおかしくないですか?
元々、問題のサイトでは記事内にAmazon.co.jpのURLを含んでいましたが、ショートコードやphpでいろいろ加工して出力していたので、直接Amazonへ飛ぶリンクは表示されていませんでした。
それを勝手に「わーいAmazonへのリンクがあるー」と誤解し、文字列を置き換えるわけでもなくブログカードを追加。
この時点で、元のAmazonURLを含む文字情報とブログカードが重複して、無駄が生じています。
その上なにか誤判定でもしているのか、Amazon.co.jpではなくAmazon.com.auのURLを使用。普通の人なら踏まないってこのURL……。
まったく疲れました。最近のWordpressほんとキライだわー。