WordPress では oEmbed 機能により、URL を入力するだけで簡単に YouTube 動画や Twitter の投稿などを埋め込むことができますが、Version 4.4 以降からは WordPress の投稿を下記のような「ブログカード」というスタイルで、内部リンクや oEmbed がサポートされた外部のサイトにも埋め込むこともできるようになっています。

しかし、ブログならともかく、WordPress を企業や団体の Web サイトとして運用している場合、単に URL を記述したいとか、そもそもブログカードとして提供したくないということがあります。

そのため、以前から functions.php に以下のように記述して、ブログカードの埋め込みと提供を無効にしていました。※検索すると様々な情報があるのですが、oEmbed を完全に無効にするのではなく、YouTube などの埋め込みは有効にするため、以下のような記述としています。

remove_filter( 'pre_oembed_result', 'wp_filter_pre_oembed_result' );
add_filter( 'embed_oembed_discover', '__return_false' );
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 );
remove_action( 'wp_head', 'rest_output_link_wp_head', 10 );
remove_action( 'template_redirect', 'rest_output_link_header', 11, 0 );

ところが、WordPress 5.0 からの新しいエディタ「Gutenberg」では、自サイトおよび他サイトでブログカードが有効か無効かによって、その挙動が安定していないようです。

まず、自サイトでブログカードが有効な場合は、URL をペーストすると「埋め込みブロック」として認識され、次のような挙動になります。

  • 自サイトの記事(ブログカード有効)はブログカードが表示される。
    →(正しい挙動)
  • 他サイトのブログカードが有効な記事は、編集画面ではリンク付きのタイトルだけが表示されるが、公開画面ではブログカードが表示される。
    →(結果は問題ないが、編集画面が正しく表示されない)
  • 他サイトのブログカードが無効な記事は、埋め込みエラーとなり、リンクへ変換を選択するとリンク付きの URL の表示となる。
    →(意図しないが許容範囲内の挙動)

一方、先の functions.php の内容を記述して、自サイトでブログカードを無効にした場合、次のような挙動をしてしまいます。

  • 自サイトの記事(ブログカード無効)は、公開画面では URL のみがリンクなしで表示されるが、編集画面ではブログカードが表示される。
    →(結果は問題ないが、編集画面が意図しない挙動)
  • 他サイトのブログカードが有効な記事も、公開画面では URL のみがリンクなしで表示されるが、編集画面ではブログカードが表示される。
    →(結果は問題ないが、編集画面が意図しない挙動)
  • 他サイトのブログカードが無効な記事は、埋め込みエラーとなり、リンクへ変換を選択するとリンク付きの URL の表示となる。
    →(意図しない挙動)

以上のように、ブログカードを無効にしていても編集画面ではブログカードが表示されてしまいます。ブログカードを無効にしている場合は「埋め込みブロック」として認識しなければよいのですが。

URL をペーストせず、直接入力すればブログカードに変換されることはないのですが、いちいち URL を直接入力することは無いと思います。
そこで、予め何か1文字入力しておいて、続きに URL をペーストすればブログカードに変換されませんので、その後入力した1文字を削除すれば大丈夫です。

なお、「クラシックブロック」内で URL をペーストした場合は問題ありません。