最近、地味にウザかったWordpress関係の問題がありまして、今日はその原因とその一時的な解決法について(直に修正される事は明言されてます)。
目次
最近、編集画面でリンクが二重に書き込まれるんだけど…
WordPressで未だにクラシックエディタを使っているけども、編集画面でリンクボタンを押すとこういう画面が開く。
それでいつも通りにリンクを挿入すると、なぜかリンクが二重出力されると言うか、おかしな事になる。
編集ページに自動で書き込まれたのは以下のようなもの。
↓↓↓ サイトに表示させてみると、同じリンク文字列が当然のように2つ並んでいる。
(このリンク先はこのサイトの親サイトで、間違って飛んでも全く無害な場所でございます)
いや、手動で余計なリンクの部分を消せば簡単に解決出来る問題だけど、しかし、何で急にこんな二重リンクが書き込まれるようになってしまったのか? それが気になって仕方ない。それにいちいち余計な部分を消すのも面倒くさいし。
この問題が発生しだしたのはWordpressの5.4がスタートした頃と重なったから、最初はWordpressに何か不具合があるのか?とか思った。
原因はプラグイン "All in One SEO"
それでいつもの如く英語圏に飛んで色々と調べる事になったけども、そしたら公式のwordpress.org(英語)のフォーラムで同じ事に疑問を持っている人を発見。
このスレ主も最初はWordpressの不具合を疑っていたけど、回答者からはトンチンカンな返答しか無くて自分も諦め掛けていたところ、今日またそのスレッドを覗いてみたらスレ主は自力でその問題の原因を特定してくれていた。(感謝ー)
それによれば、プラグインの"All in One SEO"の問題だと言う。
なるほど、だからこのプラグインを使っていなければこの不具合は出ないし、これを問題として取り上げる人はあまり居なかったのかもしれない。
"All in One SEO"の製作者からの回答 次のアップデートで修正予定
All in One SEOの公式プラグインページのサポートページには、確かにこれに関係するスレッドも既に上がっていて、プラグイン製作者さんからの回答もあった。
それによれば、現在、次のプラグインアップデートで修正予定と言う。
製作者から示された一時的なこの問題の解決法
それまで待てない…と言う人に対して、製作者さんは当座の一時的な解決法も書いてくれている。
その方法は2つある。
- テンプレート(テーマ)のfunctions.phpに以下のコードを書き足す
- (しかし、この方法では「nofollow」「sponsored」「title」の属性は失われるそうで注意が必要)
add_action( 'wp_enqueue_editor', 'aioseop_dequeue_script', 9999999, 0 ); function aioseop_dequeue_script() { wp_dequeue_script( 'aioseop-link-attributes-classic-editor' ); }
このコードを見る限り、やはりクラシック・エディタ限定の問題にも見えていて、ブロックエディタでは問題無いのかもしれない。
この解決法はSnippet(function.phpに簡単にコードを書き足せて消す時も簡単)を導入している親サイトでテストしたみたところ、二重リンクは綺麗に消えた。と言うか、最初うまく行かなくて、自分の環境ではSnippetの中の優先順位(priority)を低い数字にしたら二重リンクが消えた。
- もう一つの解決法 class-aioseop-core.phpの一部のコメントアウト
- また別の解決法として、プラグインのclass-aioseop-core.php の453行目をコメントアウトする事でも一時的に解決できるらしい。
当然、これは原文をよく確認して自己責任でやって下さい。おかしくなっても自分のサイトは責任を持てませんw
しかし、次のアップデートでこの問題は修正してくれると言うし、"All in One SEO"はいつもちゃんとアップデートが来るプラグインだから、焦らない人はアップデートを待った方が確実かもしれない。自分もこっちのサイトでは素直にアップデートを待ちたいと思う。